DOM JDOM XML Parser

Hallo,

ich möchte mit einem Java Programm eine XML Datei parsen und den Inhalt von bestimmten Elementen auslesen und dann weiterverarbeiten.
Nun ist es recht unproblemlos möglich, das ganze Dokument zu parsen und in ein Document Object einzulesen, zb mit dem DOMParser bzw dem JDOMParser. Wie aber schaffe ich es, recht schnell an ein bestimmtes Element dieses Trees ranzukommen, ohne alles durchlaufen zu müssen?

Das für mich interessante Element ist ca. das 10. Childelement vom root element aus gesehen. Also läuft zumindest mit JDOM folgender code nicht:

Document doc = builder.build(„Test.xml“);

Element root = doc.getRootElement();
List children = root.getChild(„name_des_elements“);

weil das gibt mir ja nur das erste Childelement zurück und findet damit mein gewünschtes nicht.

Gibt es eine Möglichkeit, direkt auf so ein tiefergelegenes Childelement zuzugreifen und dessen Wert auszulesen? Wenn ja, wie?

Schonmal danke für die Hilfe…

Grüße, ALex

Hallo Alex

Zwar hab ich die JavaDoc gerade nicht griffbereit, aber meiner Meinung nach müsste es in der Document Klasse eine Methode namens getElementsByTagName geben mit der Du arbeiten kannst.

HTH und Gruss
Andrea

SAX-Parser
Hallo Alex,

Mit SAX ist das Problemlos möglich:
http://www.saxproject.org/?selected=quickstart

Dort kannst Du einen Handler registrieren, der dann beim Parsen aufgerufen wird und du kannst entscheiden ob du das Element verarbeiten willst oder nicht.

Vorteil zu DOM:
Es wird nicht das ganze XML-Dokument in einen Objektbaum (DOM) eingelesen. Das spart viel Speicher.

Gruss, Simon

Hi -

Da kann ich dir nur wärmstens domm4j (http://www.dom4j.org) ans herz legen. Der Quickstart Guide erklärt dir sehr schnell die generelle Vorgehensweise bei den meisten ersten Fragen: http://www.dom4j.org/guide.html

Zusammen mit xpath (http://www.zvon.org/xxl/XPathTutorial/General/exampl…), einer netten Syntax zum Node-finden, solltest du sehr flexibel sein.

Ich benutze das Package eigentlich bei jedem XML-Anwendungsfall.

mfG,

J.P.Jarolim

Hallo,

also mal recht vielen Dank für die Antworten.
Dom4J mit XPath ist genau, wonach ich gesucht habe.

Danke nochmal für eure Hilfe!!!

Alex