JDOM (Java document object model)

Java Document Object Model (JDOM) ist eine in Java programmierbare Schnittstelle ( Application Programming Interface, API) für den Umgang mit XML-Dokumenten. JDOM ist ebenfalls in Java implementiert und steht als Open-Source-Software unter dem u.g. Link zur Verfügung. JDOM wurde speziell für Java entwickelt, und steht damit im Gegensatz zu den plattformunabhängigen Schnittstellen Document Object Model (DOM) und Simple API for XML (SAX).


JDOM bietet jedoch eine bessere Performance sowie eine bessere Nutzung des Speichers als das Original Document Object Model (DOM). Dabei ist JDOM kein Wrapper für das Document Object Model (DOM), welches vom World Wide Web Consortium (W3C) spezifiziert wurde. Bei JDOM handelt es sich vielmehr um eine autarke Klassenbibliothek, die für jeden XML-Knoten des Knotenbaumes eine separate Klasse mit den entsprechenden Methoden abbildet. Eine Alternative zu JDOM ist dom4j - eine API, die ebenfalls als Open-Source zur Verfügung steht und einen großen Funktionsumfang bietet. JDOM basiert auf einer Initiative von Jason Hunter und Brett Laughlin, so dass JDOM weder ein spezifizierter Standard des W3C noch Bestandteil des Java Development Kits (JDK) ist. Die Entwickler von Java - die Firma Sun - bietet mit JAXP eine eigene Java-Schnittstelle zu XML an.

JDOM als Open-Source-API

JDOM ist eine Open-Source API für das performante Lesen, Schreiben sowie die Modifizierung von XML-Dokumenten. Für den Aufbau von JDOM-Modellen implementiert JDOM dabei keinen eigenen Parser, sondern verwendet einen externen Parser zum Einlesen des XML-Dokuments. Im Vergleich zu dem vom W3C bereit gestellten Java Package für das DOM (Document Object Model) wird bei JDOM kein node-Objekt verwendet, und somit auch nicht der aus einem XML-Dokument zu dessen Verarbeitung aufzubauende Baum als eine geordnete Menge von XML-Knoten abgebildet. Das JDOM unterstützt in vollem Umfang die von Java her bekannten Mechanismen wie u.a. die Vererbung sowie die Überladung von Methoden und nutzt weiterhin intensiv die sogenannte Collection-API von Java, welche mit Containern für Objekte arbeitet.

Das unter dem u.g. Link zur Verfügung stehende Package von JDOM umfasst:

  • org.jdom.adapters,
  • org.jdom. filter,
  • org.jdom.input,
  • org.jdom.output,
  • org.jdom.transform,
  • org.jdom.xpath.
Mit dieser Zusammenstellung wird auch eine Reihe von Möglichkeiten des Packages deutlich. JDOM bildet das XML-Dokument auf einen Java-Objekt-Baum ab und basiert auf Klassen, welche das Dokument letztendlich im Speicher abbilden. Das Package org.jdom beinhaltet dazu die Klassen Attribute, Document, CDARA, Comment, DocType, Element und Text. Daneben gibt es die Klassen die einen XML-Namensraum oder eine XML Entity Referenz definieren sowie die Klasse Verifier, die ein XML-Dokument daraufhin prüft, ob es wohlgeformt und gültig ist. Und die Instanzen dieser Klassen sind entsprechend der objektorientierten Definition die Objekte, aus denen sich ein Baum zusammensetzt.

Während das Input-Package sowohl einen DOM- als auch einen SAX-Parser unterstützt, besteht das Output-Package aus sogenannten Helper-Klassen zur Transformation von JDOM-Dokumenten in eine andere Darstellung eines XML-Dokumentes. Beispielsweise kann dabei ein JDOM-Dokument in ein DOM-Dokument überführt werden. Das adapters-Package unterstützt bereits bestehende Implementierungen. So sind Adapter-Klassen vorhanden, beispielsweise für Parser von Sun JAXP, Oracle, Apache Xerces oder Apache Crimson. Zudem besteht die Möglichkeit der Definition von eigenen Adapter-Klassen. Das filter-Package organisiert u.a. die Sichtbarkeit aller JDOM-Objekte in einem Baum und die Selektion von Element-Objekten. Mit dem transform-Package werden Wrapper für das Sun eigene JAXP realisiert. Und schließlich ist mit dem xpath-Package u.a. die Möglichkeit gegeben, Anfragen mit Hilfe der Sprache XPath an einen Objekt-Baum in JDOM zu stellen. Dabei können auch von DOM her bekannte Methoden wie getElementById() in eigener Version implementiert werden.

JDOM-Implementierungen für XML-Dokumente

Beispiel für eine JDOM-Umwandlung

Beispiel für eine JDOM-Umwandlung

Der JDOM-Implementierung stehen zur Verarbeitung von XML-Dokumenten standardisierte Schnittstellen wie DOM und SAX gegenüber. Andererseits bestehen mit dom4j und JAXP Möglichkeiten - ebenfalls auf Java-Ebene - zur effizienten Behandlung von XML Dokumenten. Besonders JAXP ordnet den weiten Bereich von Technologien wie DOM, SAX, StAX, XLST und XPath einer darüber liegenden Abstraktionsschicht mit komfortablen Java-Schnittstellen zu. Damit werden auch der Nachteil der direkten Nutzung von externen Parsern und die daraus abzuleitende Abhängigkeit von bestimmten Klassen vermieden. Letztendlich werden aber für den Einsatz einer bestimmten Schnittstelle oder eines Werkzeuges Kriterien wie Größe, Quelle und Struktur der XML-Dokumente sowie deren Häufigkeit und Umfang der Verarbeitung entscheidend sein.

http://www.jdom.org

Informationen zum Artikel
Deutsch:
Englisch: Java document object model - JDOM
Veröffentlicht: 28.10.2013
Wörter: 723
Tags: #Java
Links: Apache, API (application programming interface), Attribut, Container, DOM (document object model)