K
KartoffelKiffer
Gast
Hallo,
ich habe mir folgendes SAX-Konstrukt geschaffen:
Funktioniert auch einwandfrei, es wird jedes mögliche XML korrekt ausgelesen.
Nun möchte ich jetzt auf ein bestimmtes Element, das durch Namen des Elements und dessen Attribut identifiziert wird, in meinem XML zugreifen. Ist dies mittels SAX-Parser auch möglich?
Bsp.:
<?xml...
<main>
<child1>nich von interesse</child1>
<child2 attr="hier">das m&chte ich auslesen</child2>
</main>
Auf mein child2 im Main-Element main mit dem Attribut attr = "hier" soll zugegriffen werden.
Leider bekomme ich dies nicht so recht hin, deshalb benötige ich Eure Hilfe.
Mfg Tom
ich habe mir folgendes SAX-Konstrukt geschaffen:
Code:
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import java.io.*;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class Sax {
public static void main(String[] args) {
try {
new Sax().createSaxParser();
} catch (Exception e) {
System.out.println("Erstellen des SAX-Parsers nicht möglich.");
}
}
private void createSaxParser() throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new Handler();
saxParser.parse(new File("/home/tom/Desktop/test.xml"), handler);
}
}
class Handler extends DefaultHandler {
@Override
public void startDocument() {
System.out.println("Start");
}
@Override
public void endDocument() {
System.out.println("Ende");
}
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
System.out.println("Element: " + qName);
for (int i = 0; i < atts.getLength(); i++) {
System.out.println("Attribut" + i + ": " + atts.getQName(i) + " = " + atts.getValue(i));
}
}
@Override
public void characters(char[] ch, int start, int length) {
System.out.println("Inhalt:");
for (int i = start; i < (start + length); i++) {
System.out.print(ch[i]);
}
System.out.println();
}
}
Funktioniert auch einwandfrei, es wird jedes mögliche XML korrekt ausgelesen.
Nun möchte ich jetzt auf ein bestimmtes Element, das durch Namen des Elements und dessen Attribut identifiziert wird, in meinem XML zugreifen. Ist dies mittels SAX-Parser auch möglich?
Bsp.:
<?xml...
<main>
<child1>nich von interesse</child1>
<child2 attr="hier">das m&chte ich auslesen</child2>
</main>
Auf mein child2 im Main-Element main mit dem Attribut attr = "hier" soll zugegriffen werden.
Leider bekomme ich dies nicht so recht hin, deshalb benötige ich Eure Hilfe.
Mfg Tom