004
20.08.2004, 12:40 Uhr
virtual
Sexiest Bit alive (Operator)
|
Ja, mal eine kleine EInführung: DOM Steht für "Document Object Model" und dient dazu ein XML document im Speicher zu halten. Vereinfacht gesprochen ist die Sicht von DOM auf die XML datei, daß die gesamte Datei ein Baum ist, wobei ein Knoten in diesem Baum durch die Klasse Node representiert wird. je nach Knotenart (Element, Text, Attribute, ...) gibt es spezialisierungen von der Node klasse. Generell funktioniert das ganze so, daß man sich das Document einliest, dann kann man von dem Document die DocumentRootNode holen und damit durch den gesamten Baum iterieren. Der Vorteil von DOM liegt gewiss darin, daß man jederzeit das gesamte Dokument im Speicher hat (was natürlich ein Nachteil ist, wenn die XML Datei recht/zu groß ist), und die DTD validieren kann.
Im gegensatz dazu bedeutet SAX "Simply API for XML", in der Version 1 (SAX) und Version 2 (SAX2). Generell solltest Du für neue Applicationen eher SAX2 verwenden, welches mehr Funktionalität bietet (die Interfaces in beiden implementation sind nicht kompatibel, es gibt aber Mapping Klassen,jedenfalls in Java). Die prinzipielle Idee bei SAX ist es, daß der ganze XML kram durch einen Parser gejagt wird, der dann "Events" erzeugt. Ein "Event kann "Jetzt beginnt ein Element Tag", oder "Jetzt kommt wichtiger Text", oder "Jetzt endet ein Element" usw sein. Diese Events werden an Handler geschickt, Deine Aufgabe als Programmierer besteht darin einen solchen Sinnvollen handler zu schreiben. zB Kann man einen Handler schreiben, der die XML Datei in ein DOM - Node Baum umsetzt, man kann auch einen schreiben, der aus einem DOM Baum eine XML datei schreibt Der Vorteil von SAX ist sicherlich, daß man unbegrenzt große Dateien bearbeiten kann. Die nachteile liegen darin, daß du die DTD nicht validieren kannst und daß Du in Deinem handler irgendwie vermerken mußt, wo Du dich im Document befindest.
Es hängt massiv von Deiner Anwendung ab, welche Vorgehensweise (DOM oder SAX) zu empfehlen ist. Generell baut zwar DOM auf SAX auf, dh DOM bedient sich in der Regel SAX um Document zu lesen/schreiben, allerdings heißt das nicht, daß DOM das HighEnd API ist, welches man unbedingt nutzen sollte. So sachen wie ConfigDateien in XML fakel ich oft über DOM ab; dagegen benutze ich SAX ganz gerne für solche Sachen wie Im/Export von Daten von einer Application zu einer anderen. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |