Java, XML und DOM

Der vom W3C entwickelte und verabschiedete DOM Standard liegt inzwischen als Level 1 und Level 2 vor.

Das Document Object Model ist eine Beschreibung der Baumstruktur eines XML Datenmodells. Diese abstrakten Schnittstellen sind in der "programmiersprachen-neutralen Sprache, der Interface Definition Language (IDL) der Object Management Group (OMG)" abgefaßt. Ziel dieser Technologie ist es, den Baum analysieren zu können und auf einzelne Teile zugreifen und diese modifizieren zu können. Daher bedingt eine Nutzung des DOM auch stets eine konkrete Implementierung dieses Document Object Models in einer Application Programmers Interface (API) für eine Programmiersprache.

Für die Programmiersprache Java bietet sich vor allem die von IBM und Apache entworfene Xerces API an. Diese beinhaltet sowohl Funktionalitäten aus dem DOM Level 1, aber inzwischen auch aus DOM Level 2.

Doch zunächst noch einmal zum Konzept des Document Object Model.

Das DOM begreift eine XML-Instanz als Baum, und um es aus Sicht einer objektorientierten Programmiersprache wie Java verständlicher zu beschreiben, als Objekte. Eine DOM Implementierung überführt einen XML Baum in ein Java Objekt, analysiert und modifiziert es, und transformiert das Objekt wiederum in einen XML Baum.

Dabei ist für das DOM der Typ eines Objekts entscheidend: Typen können bspw. Elemente, Attribute, Kommentare oder CDATA Abschnitte sein. Diese Objekttypen sind im XML Baum wiederum - in der allgemeingültigsten Beschreibung - Knoten (nodes). Diese Knoten können, in Abhängigkeit vom spezifischen Typ, bestimmte Eigenschaften haben. So haben Kommentare keinen Namen und Processing Instructions haben keine Kindelemente. Daher erben alle abgeleiteten Klassen des abstrakten Objekttyps alle Eigenschaften, ohne sie konkret umsetzen zu müssen (d.h. sie liefern im Zweifelsfall null zurück).

Auch das gesamte XML Dokument ist ein Knoten und das umschließende Wurzelelement ist wiederum ein Kind des Dokumentknotens. Dieser Dokumentknoten kann noch weitere Kindelemente haben: Kommentare, Processing Instructions und Dokument Typ Deklarationen. Dem Dokumentknoten sind zahlreiche Methoden zur Generierung von Dokumentinhalten in Form von Knoten und Elementen (was eben nicht unbedingt identisch sein muß ! ) zugeordnet.

Als weitere Implementierung folgen dann die Elemente: Elemente können Elemente als Kindelemente haben oder auch Text, Kommentare o.ä. Attribute sind als Knoten dem Dokumentbaum zugeordnet, sind aber keine möglichen Kinder von Knoten, sondern vielmehr Eigenschaften von Elementen.

Die Knotentypen des DOM sind in Java, wie auch in den meisten anderen Programmiersprachen als Klassenkonstanten vom Typ short festgelegt. Dies ermöglicht beispielsweise ein switch Konstrukt in Java, welches nach dem Knotentyp fragt und anschließend alle möglichen Typen durchläuft und die programmierten Ereignisse abarbeitet.

 

Copyright & Kontakt
jcpohl@gmx.de
© www.jcpohl.de 1999/2000