Die beste Art, XML in Java zu lesen

8

Von einigen unserer anderen Anwendungen erhalte ich eine XML-Datei.

Ich möchte diese XML-Datei Knoten für Knoten lesen und Knotenwerte in der Datenbank zur weiteren Verwendung speichern.

Also, was ist der beste Weg / API zum Lesen von XML-Dateien und zum Abrufen von Knotenwerten mit Java?

    
Romani 25.08.2011, 09:36
quelle

8 Antworten

2

dom4j und jdom sind hübsch einfach zu bedienen (ignorieren die Anforderung "beste" für einen Moment;))

    
Andreas_D 25.08.2011, 09:38
quelle
7

Dafür gibt es verschiedene Werkzeuge. Heute bevorzuge ich zwei:

Hier ist ein guter Vergleich zwischen dem Simple und JAXB: Ссылка

Persönlich mag ich Simple ein bisschen besser, weil die Unterstützung von Niall ausgezeichnet ist, aber JAXB (wie im obigen Blogpost erklärt) kann mit weniger Code eine bessere Ausgabe produzieren.

StAX ist eine einfachere API, mit der Sie XML-Dokumente lesen können, die einfach nicht in den Arbeitsspeicher passen (weder Simple noch JAXB ermöglichen es Ihnen, ein XML-Dokument "Objekt für Objekt" zu lesen) RAM sofort).

    
Aaron Digulla 25.08.2011 09:40
quelle
4

Ich würde für ein einfaches XML-Tool raten, wenn Sie damit umgehen können.

Zum Beispiel haben ich und meine Kollegen komplexe XML-Frameworks eingeführt, die zunächst wie ein Zauber wirken. Dann vergessen Sie das Framework, Sie haben spezielle Build-Dateien nur für die Zuordnung von XML zu Beans, Sie haben Beans mit Anmerkungen versehen, Sie bieten eine neue Barriere für neue Entwickler zu Ihrem Projekt. Sie verlieren viel von Ihrer Freiheit zu refactor.

Am Ende wird es dir leid tun, dass du das komplexe Framework benutzt hast, um am Anfang etwas Zeit zu sparen und ich habe mehr als einmal gesehen, dass die Frameworks beim Refactoring rausgeworfen wurden, weil alle ein negatives Gefühl hatten sind großartig auf Papier.

Denken Sie also zweimal darüber nach, komplexe XML-Frameworks einzuführen, wenn Sie sie selten verwenden. Wenn Sie und Ihr Team sie häufiger benutzen, dann sind sie der richtige Weg.

    
Farmor 25.08.2011 09:50
quelle
4

Ich empfehle die Verwendung von XPath. Xalan ist bereits im JDK enthalten (es werden keine externen JARs benötigt) und es passt zu Ihrer Anforderung, d. H. Es durchlaufen Elementknoten (ich nehme an) und speichert ihre Textwerte. Zum Beispiel:

%Vor%

Dieses Beispiel gibt eine Liste aller Nicht-Root-Elemente zurück und gibt den entsprechenden Elementnamen und Textinhalt aus. Passen Sie den XPath-Ausdruck Ihren Anforderungen an.

    
forty-two 25.08.2011 10:58
quelle
2

Probieren Sie Apache Xerces aus. Es ist reif und robust. Alle diese verfügbaren Alternativen werden auch tun, nur sicher sein, keine eigene Implementierung zu implementieren.

    
Oh Chin Boon 25.08.2011 09:37
quelle
2

Um die Frage des Parsings des XML und des Speicherns der Werte in einer Datenbank zu umgehen, möchte ich die Notwendigkeit, das obige zu tun, in Frage stellen. Die meisten Datenbanken können heutzutage mit XML umgehen, so dass sie in irgendeiner Weise in einer Tabelle gespeichert werden können, ohne dass der Inhalt geparst werden muss; und der Inhalt eines solchen XML innerhalb einer Spalte in einer Tabelle kann typischerweise mit 'xmlselect ()' und ähnlichen Funktionen abgefragt werden.

Denken Sie eine Sekunde darüber nach; Wenn sich in naher oder ferner Zukunft der Inhalt der XML-Datei, die Sie von der anderen Anwendung erhalten, ändert, müssen Sie viele Änderungen vornehmen. Wenn es sich oft ändert, wird es ein Alptraum.

Prost, Wim

    
Wivani 25.08.2011 11:13
quelle
0

Probieren Sie XStream aus, dieser ist wirklich einfach.

    
Infeligo 25.08.2011 09:39
quelle
0

Nun, ich habe Stax verwendet, um ziemlich viele XML-Knoten zu analysieren, die weniger Speicher als Dom und Sax benötigen, weil sie XML-Daten ziehen. Stax könnte eine gute Wahl für große XML-Datenknoten sein.

    
David 25.08.2011 10:11
quelle

Tags und Links