StAX / SAX => Wie XML Datenstruktur in Java abbilden?

Status
Nicht offen für weitere Antworten.
Hallo Experten,

würde gerne mit STAX/SAX ein XML Dokument einlesen und verarbeiten. Hab das soweit auch alles super am laufen, nur bin ich mir absolut unsicher, wie man am besten die XML Struktur in eine Java Datenstruktur abbildet. Die beiden Parser liefern ja nur Events zum jeweiligen "Element".

Siehe folgendes Beispiel:

[XML]
<root>
<sub>
<subsub>
<subsubsub>
</subsubsub>
</subsub>
</sub>
</root
[/XML]

Angenommen das Dokument ist sehr tief (mit vielen Subelementen) und sehr vielfältig (mit sehr vielen unterschiedlichen Elementtypen), wie bilde ich das am besten im Java ab um genau zu wissen wo ich bin?

Man könnte z.B. jedem Element in XML eine boolean variable zuweisen und diese dann bei Start des Tags/Events (welche mir der Parser liefert) auf true setzen (und bei End-Tag auf false).

also
root=true;
sub=true;
subsub=true;

usw.

dann könnten ich später jederzeit bestimmen wo ich im Dokument bin und darauf testen:

if (root&&sub&&subsub) {
//jetzt weiss ich das in an der richtigen Position bin und kann z.B. den Content auslesen und in einem passenden subsubDTO den Wert setzen
}

Das ist nur super uneffizient mit den booleans (da ich für jedes Element händisch eine Variable anlegen muss, gerade bei sehr tiefen Dokumente oder sehr vielen unterschiedlichen Elementtypen). Welche Best-Practices gibt es diese Struktur in Java abzubilden? Ggf. ist es mit einer Arraylist am einfchsten und direkt den Element-Namen als String reinspeichern? Testen ist dann leider nicht ganz so schön wie oben mit boolean aber ggf. könnte man dafür eine Methode schreiben die das erledigt...

Ihr XML Profis habt dafür aber bestimmt noch eine viel clevere Lösung. Wie macht Ihr das wenn ihr solche XML Strukturen in Java speichern müsst (um zu prüfen wo ihr im Dokument seid), was sind da gute Tipps oder gerne auch Beispiele (hab schon gegooglet aber so weit reichen die Beispeile immmer in Netz nicht, die loggen immer nur das eingelsene XML wieder direkt aus). (Oder gibts vielleicht eine Funktion die mir die genaue Position doch irgendwie liefert und auf die ich einfach testen kann?)

Vielen Dank!!
Tim
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Warum verwendest du kein XML Binding? Eclipse EMF ist da klar mein Favorit, und als Alternative Jaxb
 
Hallo Wildcard,

erstmal vielen Dank für die schnelle Antwort! JAXB scheint ganz interessant zu sein, hab ich mir mal kurz angesehen und werde das sicherlich auch in anderem Kontext mal nutzen.

Im konkreten Falle geht es mir darum auch zulernen, wie man das am besten machen könnte, da ich mir schon feste den Kopf zerbrochen habe.

Ausserdem wird die Anwendung Giga/Terrabytweise XML Dateien parsen und ich würde vermuten, dass SAX/STAX besser performt...

Bin somit für weitere Expertentips, wie dieses Problem typischerweise gelöst wird, sehr dankbar!

danke und viele grüße
tim

Noch ein wichtiger Edit:

Hab vor dem Posten hier auch im Forum gesucht und bin irgendwie dabei auf die URL:
Java and XML - Tutorial (siehe auf der Seite unter 3.3 das STAX Tutorial).
gekommen.

Das Beispiel ist gut und genau so funktioniert das auch bei mir perfekt und ist super einfach. Wenn die XML aber z.B. so aussieht, weiss nicht nicht mehr richtig weiter:

[XML]
<config>
<mode>1</mode>
<unit>900</unit>
<current>1</current>
<interactive>1</interactive>
<server>
<urls> <== OPTIONAL
<url>xyz</url>
<url>xyz</url>
</urls>
<cluster></cluster>
</server>
<db> <== OPTIONAL
<server>
<url>
<host></host>
<login></login> <=OPTIONAL
</url>
</server>
</db>

</config>


[/XML]

DAs ist eigentlich nur eine super triviale XML datei aber die sauber parsen mit den ganzen optionalen Tags scheint für mich extrem aufwändig zu sein, wahrscheinlich mache ich da was falsch???:L
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Interfaces bei StAX XML & JSON 2
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
T StAX und Reihenfolge in XML XML & JSON 6
D Stax mehrere "Kindelemente" zusammen XML & JSON 2
P mehrere Parameter in XML (stax) XML & JSON 3
H JAXB und STAX XML & JSON 2
Y stax Problem XML & JSON 3
N STAX Serializer (Formatierer)? XML & JSON 2
T StAX und Codierung XML & JSON 3
G Wie Attribute aus XML in ein Model schreiben (StAX)? XML & JSON 7
A StAX formatierung oder auch newline! XML & JSON 2
K stax problem XML & JSON 2
J StAX -- Woodstox Implementation nutzen XML & JSON 6
A StAX API: Cannot Cast from QName to String! XML & JSON 2
L Datenstruktur in XML-File schreiben XML & JSON 2
A Unterschiedliche Datenstruktur XML <-> Java mappen XML & JSON 9
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
T Tags in XML Datei mit Java erstellen XML & JSON 3
E JAXB und java.nio.file.Path XML & JSON 4
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
S Java REST Client + Json XML & JSON 8
L Lässt sich folgendes so oder so ähnlich mit Java und XML umsetzen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
J JSON zu Java mit der GSON Google API XML & JSON 0
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
E JAVA simple.JSONObject cannot be cast to simple.JSONArray XML & JSON 9
P Einheiten in Java XML & JSON 4
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
A WSDL und Java XML & JSON 5
A XMLRPC für Java XML & JSON 3
S XML auf Java Klassen Mappen XML & JSON 10
N Java XML schreiben funktioniert nicht XML & JSON 1
B aus xsd Java Klassen generieren XML & JSON 3
MiMa Mehrfachvariablen in Java durch XML XML & JSON 4
Q XML-File als Objekt in Java XML & JSON 6
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
S Wie aktualisiert man den Java-Kode mit FOP1.0? XML & JSON 1
L XSL: Aufruf Java-class XML & JSON 11
N Java Code aus XML Datei generieren XML & JSON 8
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
R XSD aus Java Klassen erzeugen?? XML & JSON 2
N xsd pattern in java einlesen XML & JSON 6
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
F SOAP in Java XML & JSON 6
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
F Einlesen von JDBC connection in Java von XML XML & JSON 4
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
M Probleme mit XPath bei Java XML & JSON 5
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
V JAXB schema 2 java XML & JSON 3
S XJC --> Java-Objects compile Problem XML & JSON 4
G Mit JSON Java und C# verbinden XML & JSON 4
K XML Datei in ein Java package „einbinden" XML & JSON 3
H Java - XML - Rekursion - Verwirrung XML & JSON 6
F XML Datei in Java einlesen XML & JSON 4
J XSD > XML > Java XML & JSON 7
F XML mit Java XML & JSON 2
algorismi SVG Datein mit Batik in Java reinladen XML & JSON 3
S Java - Klassen erzeugen aus xsd bzw. wsdl XML & JSON 3
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
H XML plattformunabhängig/Open Source für Java XML & JSON 4
C Java-Imports bei Jaxb XML & JSON 8
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
Fadi .classpath(XML) mit Java lesen XML & JSON 2
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
M Problem mit FOP in Java Programm XML & JSON 2
H Fop / Java /Fonts XML & JSON 6
H XSL Aufruf via Java mit neuen Fonts XML & JSON 9
T Java Klasse für gegebenes XML erstellen XML & JSON 4
M Xlink in Java-Objekt umwandeln XML & JSON 9
S Jdom+java webstart XML & JSON 4
P Einstieg in XML mit Java XML & JSON 3
G MS-Word Dokument mit Java erstellen XML & JSON 2
N AXIOM mit Java 1.4 XML & JSON 4
J DTD in Java integrieren? XML & JSON 3
L XML Datei in Java angeben Pfad? XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
G XML mit JAVA an URL senden (http post) XML & JSON 12
D Java DOM Ausgabe ohne XML header XML & JSON 4
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
S Java 6 und Xerces-j-2-9 XML & JSON 3
E XML mit java einlesn XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
G JAVA und DOM XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
P DTD -> Java XML & JSON 4
K xml --> sax --> java objekthierarchie XML & JSON 2
B DTD aus Java erzeugen XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
K java + xpath -> performanceproblem XML & JSON 9
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9

Ähnliche Java Themen

Neue Themen


Oben