Android: DOM vs SAX vs XMLPullParser Parsing?

9

Ich analysiere XML-Dokumente mit dem SAX-Parser.

Ich möchte wissen, welches besser und schneller mit DOM , SAX Parser oder XMLPullParser zu arbeiten ist.

    
Basbous 17.01.2012, 10:53
quelle

3 Antworten

7

es hängt davon ab, was Sie tun, wenn Sie sehr große Dateien haben, dann sollten Sie SAX-Parser verwenden, da es Ereignisse auslöst und sie freigibt, nichts ist im Speicher gespeichert, und mit SAX-Parser können Sie nicht auf Element zugreifen Zufälliger Weise gibt es kein Zurück! , aber Dom lässt Sie auf einen beliebigen Teil der XML-Datei zugreifen, da sie die gesamte Datei / das gesamte Dokument im Speicher hält. hoffe diese antwort du fragst.

Wenn Sie wissen möchten, welcher schnellste Parser Xerces der schnellste ist, den Sie finden, sollte der SAX-Parser Ihnen mehr geben Leistung als Dom

    
confucius 17.01.2012, 11:01
quelle
1

Der SAX-XML-Parser ist bereits im Android-SDK verfügbar.

Ссылка

so ist es einfach zu erreichen.

    
SilentKiller 17.01.2012 11:06
quelle
1

Ein Aspekt, mit dem verschiedene Arten von Parsern klassifiziert werden können, ist, ob sie das gesamte XML-Dokument vorab in den Speicher laden müssen. Parser, die auf dem Document Object Model (DOM) basieren, tun das: Sie parsen XML-Dokumente in eine Baumstruktur, die dann im Speicher durchlaufen werden kann, um ihren Inhalt zu lesen. Auf diese Weise können Sie ein Dokument in beliebiger Reihenfolge durchlaufen und einige nützliche APIs erstellen, die über das DOM gelegt werden können, z. B. XPath, eine Pfadabfragesprache, die speziell zum Extrahieren von Informationen aus Bäumen entwickelt wurde. Die Verwendung von DOM allein ist kein großer Vorteil, da die API klobig ist und es teuer ist, immer alles im Speicher zu lesen, auch wenn dies nicht erforderlich ist. Daher sind DOM-Parser in den meisten Fällen nicht die optimale Wahl, um XML auf Android zu parsen.

Es gibt eine Klasse von Parsern, die kein Dokument im Voraus laden müssen. Diese Parser sind stream-basiert , was bedeutet, dass sie ein XML-Dokument verarbeiten, während sie es immer noch aus der Datenquelle (dem Web oder einer Festplatte) lesen. Dies beinhaltet dass Sie wie bei DOM keinen wahlfreien Zugriff auf die XML-Struktur haben, da keine interne Darstellung des Dokuments gepflegt wird. Stream-Parser können weiter voneinander unterschieden werden. Es gibt Push-Parser , die beim Streamen des Dokuments bei einem neuen Element zu Ihrer Anwendung zurückrufen. SAX-Parser fallen in diese Klasse. Dann gibt es Pull-Parser, die mehr wie Iteratoren oder Cursor sind: Hier muss der Client explizit nach dem nächsten Element fragen, das abgerufen werden soll.

Quelle: Android in der Praxis.

    
Quantum_VC 17.03.2015 04:09
quelle

Tags und Links