Zum Inhalt springen

Diskussion:Simple API for XML

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Juni 2007 um 17:29 Uhr durch Frankao (Diskussion | Beiträge) (SAX vs. DOM). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Es ist Quatsch, dass die "Simple API for XML" eine Bibliothek ist. Dies wird auch klar, wenn man nur die ersten Absätze des im Artikel angeführten SAX2-Buches von O'Reilly liest. Daher benötigt der Wikipedia-Artikel eine Überarbeitung. (16.12.04)

-- Habe den Artikel daher jetzt selbst mal notdürftig geändert.

SAX vs. DOM

In diesem Artikel wir die sequentielle Abarbeitung eines Zeichendatenstroms im Gegensatz zum vollständigen Parsen einer Datei aus meiner Sicht nicht genügend gewürdigt.

DOM und SAX haben beide Vor- und Nachteile. Ohne jetzt im Buch für Compilerbau oder formale Sprachen nachzusehen (ich gehe von den extremen Implementierungsmöglichkeiten aus):

DOM baut i.W. zuerst einen vollständigen Syntaxbaum auf:
+ Eine Validierung der gesamten Datei ist möglich. Dadurch werden nur korrekte XML Dokumente bearbeitet. Es können keine Aktionen entstehen, die aufgrund eines Syntax-Fehlers zurückgesetzt etc. werden müssen
+ Da der Baum im Speicher vorliegt, kann er schnell vor- und rückwärts navigiert werden.
- Ein solcher Baum belegt entsprechend Speicher.
- Die Erstellung des Baums kostet Rechenzeit (die erste Anfrage kann erst "spät" erfolgen).

SAX gibt (ähnlich einem lexikalischen Analyzer) erkannte Tokens sofort an entsprechende Funktionen weiter:
+ Schnelle Vorwärtsabarbeitung des XML-Stroms ist möglich.
+ Niedriger Speicherbedarf.
- Syntaxfehler werden erst spät erkannt. Die Anwendung muss also ein entsprechendes Fehlermodell unterstützen. Es sollten vorher keine Aktionen ausgelöst werden, die nicht kompensiert und zurückgenommen werden können (bzw. es ist eigentlich egal, ob Aktionen ausgelöst wurden).
- Eine Rückwärtsnavigation ist an sich nicht möglich, außer das Ergebnis wurde zwischengespeichert.

Wie im Artikel angedeutet, sind auch hybride Ansätze implementiert, die ein bischen von beidem machen.

Letztlich muss man aufgrund der Anwendung und dem Umfang/Qualität der vorliegenden XML-Parser entscheiden, welchem Paradigma man dem Vorzug geben will.