Exkurs - Das Document Object Model (DOM)
XML-Dokument als Baum aus Objekten
Das Document Object Model (DOM) ist eine standardisierte Spezifikation einer Schnittstelle für den Zugriff auf XML-Dokumente.
Die Grundidee des DOM besteht darin, ein XML-Dokument in Baumform mit Hilfe geeigneter Objekte zu repräsentieren. Diese Idee soll anhand des folgenden Beispiels verdeutlicht werden:
<?xml version="1.0" encoding="iso-8859-1"?>
<Kurs>
<Fach>Informatik</Fach>
<Typ>Grundkurs</Typ>
<Stufe>11</Stufe>
<Bezeichner>11-in-1</Bezeichner>
<Unterricht>
<Einheit>
<Tag>Montag</Tag>
<Stunde>7</Stunde>
</Einheit>
<Einheit>
<Tag>Mittwoch</Tag>
<Stunde>3</Stunde>
</Einheit>
<Einheit>
<Tag>Mittwoch</Tag>
<Stunde>4</Stunde>
</Einheit>
</Unterricht>
</Kurs>
Die Objekt-Struktur dieses XML-Dokuments kann man mit Hilfe des folgenden Baumdiagramms verdeutlichen:
Um einen solchen Baum mit Hilfe von Objekten darzustellen, benötigt man einen geeigneten Satz von Klassen zusammen mit deren Methoden und Attributen. Dieser Satz von Klassen wird in der DOM-Spezifikation genau beschrieben und in einer DOM-Implementierung programmiert.
Basisklasse
Die Basisklasse zur Realisierung eines DOM-Baumes ist die Klasse Node
. Objekte dieser
Klasse verfügen über geeignete Attribute, um einen Baum zu erstellen und um die Daten der XML-Elemente
zu speichern.
Die folgende Abbildung zeigt einen Ausschnitt aus der Darstellung des oben gezeigten XML-Dokuments mit Hilfe
von Objekten der Klasse Node
.
Abgeleitete Klassen
Die Basisklasse Node
ist weiter spezialisiert zu den Klassen Document
(zur Verwaltung des gesamten XML-Dokuments), Element
(zur Verwaltung von XML-Elementen) und
Text
(zur Verwaltung von Textpassagen).
Diese abgeleiteten Klassen stellen zusätzliche Attribute und Methoden zur Verwaltung und Verarbeitung eines DOM-Baumes zur Verfügung. In den folgenden Tabellen sind einige dieser Attribute und Methoden aufgelistet.
Auswahl an Attributen und Methoden der Klasse Document
:
Attribut / Methode | Bedeutung / Verhalten |
---|---|
documentElement | Attribut zur Verwaltung des Knotens zum Wurzelelement des XML-Dokuments |
getElementsByTagName(name) | Methode, die eine Liste mit den Knoten zu allen Elementen des XML-Dokuments, die
den Tagnamen namehaben, als Ergebnis zurückgibt |
Auswahl an Attributen und Methoden der Klasse Element
:
Attribut / Methode | Bedeutung / Verhalten |
---|---|
tagName | Attribut zur Verwaltung des Namens des Element-Knotens |
getElementsByTagName(name) | Methode, die eine Liste mit den Knoten zu allen Elementen des XML-Dokuments, die
den Tagnamen namehaben, als Ergebnis zurückgibt |
hasAttribute(name) | Methode, die überprüft, ob das Element zum Knoten ein Attribut mit dem übergebenen
Attributnamen namehat. |
getAttribute(name) | Methode, die den Attributwert zum Attribut mit dem übergebenen Attributnamen namedes Element-Knotens zurückgibt |
Auswahl an Attributen und Methoden der Klasse Text
:
Attribut / Methode | Bedeutung / Verhalten |
---|---|
data | Attribut zur Verwaltung des Werts des Text-Knotens |