2017-05-08 2 views
0

Welches ist der effiziente Weg zum Lesen von XML. Ich bin mir dessen bewusst zwei Möglichkeiten:

1) JAXB: Durch meine Klassen mit jaxb Annotation annotieren wir die XML in Java-Objekt umgekehrt mit Rangierung & Unmarshalling von Objekt zu erhalten.Welches ist der beste Weg, um Wert von XML zu holen: JAXB oder DOM?

2) DOM: Der Zugriff auf dom-Parser zum Parsen der XML-Datei und die Verwendung von Xpath-Werten aus XML ist möglich.

Beispiel von DOM:

 File fXmlFile = new File("/Users/link1/input.xml"); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 

sich nach den Geschäftsanforderungen, erwarte ich den schnellsten Weg und der bessere Weg zwischen den beiden oben genannten zu verwenden. Vorschläge und wenige Taktiken würden geschätzt.

+0

sind Sie JAXB oder DOM zu verwenden, erforderlich, oder sind SAX, StAX und Jackson XmlMapper eine Option? – toongeorges

+0

Ihr Google Foo hätte Ihnen die richtige Antwort gesagt. ABER .. wenn dein xml klein ist (glaube 500 MB) gehe an Ort und Stelle (DOM) gehe sonst streaming (SAX, StaX) – SomeDude

+0

@toongeorges Als neuer Benutzer freue ich mich derzeit nur auf diese beiden Optionen und habe wenig Zeit i müssen einen von ihnen auswählen. – Vaibs

Antwort

2

Erste Frage: hat Ihr XML immer die gleiche Struktur und kann diese Struktur auf eine Hierarchie von Java-Objekten abgebildet werden?

  1. Wenn ja -> entweder Verwendung JAXB oder Jackson XmlMapper

  2. Wenn Nein (die Struktur Ihrer XML variiert) -> Sind Sie mit vielen zufälligen Zugriff auf die Daten in Ihrem XML benötigen liest und möglicherweise einige schreibt (nach dem Sie die Daten zurück in XML konvertieren)?

    2.1. Wenn Ja -> DOM verwenden (Er ist für die Verarbeitung des XML-Dokumentbaums im Speicher gedacht, hat aber mehr Aufwand)

    2.2. Wenn Nein (effizienteres XML-Parsing) -> Müssen Sie alle Informationen im XML analysieren oder benötigen Sie eine XML-Validierung?

    • 2.2.1 Wenn ja -> Verwendung SAX (es wird in JDK und ermöglicht die Validierung enthalten)

    • 2.2.2 Falls nein -> verwenden StAX (es wird ein XML-Pull-Parser, auch erlaubt, einige Werte in der XML-Lesen ohne die vollständige XML zu analysieren zu haben, aber es bietet keine Validierung.)

Verwandte Themen