Warum parst Sax schneller als Dom-Parsing? und wie funktioniert stax?

somewhat im Zusammenhang mit: libxml2 von java

yes, diese Frage ist ziemlich umständlich - sorry. Ich hielt es so dicht, wie ich es für möglich hielt. Ich habe die Fragen kühn geschrieben, um es einfacher zu machen, einen Blick darauf zu werfen, bevor ich das Ganze lese.

Warum analysiert Saxophon schneller als Dom-Analyse? Das einzige, was mir einfällt, ist, dass Sie wahrscheinlich den Großteil der eingehenden Daten ignorieren und somit keine Zeit damit verschwenden, Teile der XML zu verarbeiten, die Sie nicht interessieren. IOW - Nach dem Parsen mit SAX kann die ursprüngliche Eingabe nicht wiederhergestellt werden.Wenn Sie Ihren SAX-Parser so geschrieben hätten, dass er für jeden einzelnen XML-Knoten verantwortlich ist (und somit das Original wiederherstellen könnte), wäre er nicht schneller als DOM?

Der Grund, den ich frage, ist, dass ich versuche, XML-Dokumente schneller zu analysieren. Ich muss nach dem Parsen Zugriff auf den gesamten XML-Baum haben. Ich schreibe eine Plattform, auf die sich Dienste von Drittanbietern einbinden lassen, sodass ich nicht vorhersagen kann, welche Teile des XML-Dokuments benötigt werden und welche nicht. Ich kenne nicht einmal die Struktur des eingehenden Dokuments. Deshalb kann ich weder Jaxb noch Sax verwenden. Der Speicherbedarf ist für mich kein Problem, da die XML-Dokumente klein sind und ich jeweils nur 1 im Speicher benötige. Es ist die Zeit, die ich brauche, um dieses relativ kleine XML-Dokument zu analysieren, das mich umbringt. Ich habe noch nie Stax verwendet, aber vielleicht muss ich es weiter untersuchen, weil es der Mittelweg sein könnte.Wenn ich das richtig verstehe, behält stax die ursprüngliche XML-Struktur bei und verarbeitet die von mir angeforderten Teile auf Anfrage. Auf diese Weise kann die ursprüngliche Analysezeit schnell sein, aber jedes Mal, wenn ich ihn auffordere, einen Teil des Baums zu durchlaufen, den er noch nicht durchlaufen hat, findet dann die Verarbeitung statt?

Wenn Sie einen Link angeben, der die meisten Fragen beantwortet, werde ich Ihre Antwort akzeptieren (Sie müssen meine Fragen nicht direkt beantworten, wenn sie bereits an anderer Stelle beantwortet wurden).

update: Ich habe es in Sax umgeschrieben und es analysiert Dokumente in durchschnittlich 2,1 ms. Dies ist eine Verbesserung (16% schneller) gegenüber den 2,5 ms, die dom benötigt hat, aber es ist nicht die Größe, die ich (et al.) Erraten hätte

Vielen Dan

Antworten auf die Frage(8)

Ihre Antwort auf die Frage