next up previous contents
Nächste Seite: Chemische Formate Aufwärts: Parser Vorherige Seite: SAX-API   Inhalt

DOM-API

Im Gegensatz zu SAX wurde DOM vom W3C entwickelt und ist somit ein internationaler Standard [W3C2003]. Anders als bei SAX muß hier zunächst die ganze Struktur des Dokumentes im Speicher abgelegt sein, bevor man das Dokument bearbeiten kann. Typischerweise greift DOM dafür jedoch auf SAX zurück, da es nicht selbst für das Einlesen eines Dokuments verwendet werden kann. Die beiden Schnittstellen sind also nicht komplett verschieden, sondern bauen vielmehr aufeinander auf.
Die interne Speicherung des Dokumentes wird mit einer Baumstruktur, dem DOM-Tree, realisiert. Da man sich problemlos während der Bearbeitung innerhalb des Baums bewegen kann, läßt sich jederzeit jeder Knoten manipulieren. Man kann so sehr flexibel das Dokument bearbeiten, was den wesentlichen Vorteil von DOM ausmacht. Nachteilig ist jedoch die speicherintensive Verwaltung des Dokumentes. Die interne Darstellung eines Dokumentes läßt sich am einfachsten anhand eines Beispiels erörtern. Verwendet wird dafür das Element Buch aus der DTD im Quellcode 3.1.
<Buch ISBN="1851665129">
   <Titel>Proteins</Titel>
   <Autor>
       <Name>Ralph A. Bradshw</Name>
   </Autor>
   <Autor>
       <Name>Mary Purton</Name>
   </Autor>
</Buch>
Jedes Element der XML-Anwendung wird als Baumknoten im DOM-Tree dargestellt. Untergeordnete Elemente werden als Kinder eine Ebene tiefer im Baum verwaltet. Genauso verhält es sich mit den Textfeldern der Elemente. Sie werden ebenfalls als Kindknoten dem zugehörigem Elementknoten untergeordnet. Attribute werden dem jeweiligen Element zugeordnet und sind nicht im DOM-Tree enthalten, obwohl sie intern auch durch Knoten dargestellt werden.

Abbildung 3.1: Abbildung in einem DOM-Tree
\begin{figure}
\begin{center}
\unitlength0.4cm
\begin{picture}(37,20)
\thick...
...val(7,2)}
\put(26.3,1){Mary Purton}
\end{picture}
\end{center}
\end{figure}


next up previous contents
Nächste Seite: Chemische Formate Aufwärts: Parser Vorherige Seite: SAX-API   Inhalt
Oliver Krone 2003-04-28