Diskussion:Simple API for XML
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) -- (nicht signierter Beitrag von 217.226.205.190 (Diskussion) 23:44,15. Dezember 2004)
-- Habe den Artikel daher jetzt selbst mal notdürftig geändert. -- (nicht signierter Beitrag von 217.84.182.100 (Diskussion) 01:31, 30. Januar 2005)
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. -- (nicht signierter Beitrag von Frankao (Diskussion | Beiträge) 15:29,03. Juni 2007)
Abschnitt "Ereignisse in SAX": character-Ereignis?
Das Beispiel im Abschnitt "Ereignisse in SAX" ist für mich nicht ganz nachvollziehbar. Und zwar wegen der Zeilen mit den "character("\n ")":
- Warum gibt es an genau diesen Stellen ein character("\n ")?
- Meine Vermutung: Wenn ein XML-Element keine Zeichenkette als Inhalt hat (anders als bspw. "<titel>DOM,..</titel>") dann wird in SAX ein character("\n ")-Ereignis aufgerufen, um genau das anzuzeigen. Wenn das so ist, sollte man das aber bitte zum besseren Verständnis noch erläutern.
- Warum sind da verschieden viele Leerzeichen nach dem ("\n ?
- Tippfehler? laut [1] gibt es zwar eine Methode "characters(..)" aber keine "character(..)"-Methode. Oder habe ich an der falschen Stelle geguckt?
Bitte um Klärung! -- GGShinobi 23:01, 14. Feb. 2012 (CET)