Ich habe dies unter XML-Datei
%Vor%Jetzt wird das Java-Programm zum Lesen von Daten aus einer XML-Datei angezeigt.
%Vor%und das Ergebnis war ..
%Vor%Jetzt ist meine Frage bitte beraten, gibt es eine andere Möglichkeit, die am schnellsten ist, diese XML zu lesen, ich suchte die schnellsten, bitte beraten .. !!
Mit ReadAndPrintXMLFileWithStAX
unten, wenn ich mit ReadAndPrintXMLFileWithSAX
aus der Antwort von gontard vergleiche, ist der StAX-Ansatz schneller. Mein Test beinhaltete die Ausführung des Beispielcodes 500000
mal auf JDK 1.7.0_07 für den Mac.
ReadAndPrintXMLFileWithStAX (mit Java SE 7)
Unten finden Sie ein besser optimiertes StAX-Beispiel (JSR-173) mit XMLStreamReader
anstelle von XMLEventReader
.
Ausgabe
%Vor%Wenn die Leistungen in Ihrem Fall wichtig sind, sollten Sie SAX oder StAX (http: //en.wikipedia .org / wiki / StAX) zu DOM .
Mit DOM
wird die Datei XML
in einem ersten Mal in ein Objektmodell geparst, das Sie dann fragen können. Also für Sie Algorithmus gibt es zwei Pass.
Bei SAX
werden während der Syntaxanalyse einige Callbacks aufgerufen ( startDocument
, endElement
...), SAX
ist ereignisbasiert oder ein Push-Modell .
Mit StAX
steuern Sie das Parsing. Sie bewegen einen Cursor von einem Element zu einem anderen. Dies ist ein Pull-Modell .
Bei einer Datei mit 32910000 Personen vergleiche ich meine Version mit SAX
mit der Überantwort (von Blaise Doughan) mit StAX
. Ich entferne alle System.out.println
instrusctions. Mein Programm brauchte 106 Sekunden, um die gesamte Datei zu lesen, und das andere dauerte 94 Sekunden.
Ich nehme an, dass SAX
langsamer ist, weil alle callback
aufgerufen werden, auch wenn sie nichts tun (das Push-Modell ), während bei StAX der Cursor nur auf die "interresting" -Elemente (das < em> Modell ziehen ).
Zum Beispiel mit Java 7:
%Vor%