20.3 | Analogien zwischen XML und Java |
Nicht nur aus der anwendungsorientierten Perspektive, sondern auch aus technischer Sicht lassen sich zahlreiche Analogien zwischen XML und Java finden, die die Verarbeitung von XML-Daten mit Java-Programmen nahelegen:
- So wie man bei Java zwischen einer Klasse und den davon erzeugten Exemplaren unterscheidet, so spricht man auch bei XML von der DTD und den Exemplaren einer DTD. Der Begriff Exemplar steht hier für Dokumente, die mit einer bestimmten DTD ausgezeichnet sind, die also gewissermaßen Ausprägungen dieser DTD sind.
- So wie eine Java-Klasse die Struktur und alle Merkmale der daraus erzeugten Objekte festlegt, so definiert eine XML-DTD die Struktur der danach ausgezeichneten Dokumente und die Charakteristika der erlaubten Elemente.
- Aus der Baumhierarchie der Bestandteile eines XML-Dokuments kann ein Baum von Java-Objekten generiert werden.
- Die Attribute eines XML-Elements können auf Attribute einer Java-Klasse abgebildet werden. Entsprechend wird XML seit dem J2SDK 1.4 als Persistenzformat für Java-Beans benutzt.
- So wie XML auf den Unicode-Zeichensatz ausgelegt ist, so unterstützt auch Java Unicode in zweierlei Hinsicht: In Java-Quelltexten sind Unicode-Zeichen erlaubt, und die Verarbeitung von Unicode-Zeichen in den Programmen wird durch den Datentyp char und zahlreiche Klassen in der Standardbibliothek unterstützt.
Sowohl in XML und seit Version 1.1 auch in Java wird die Abbildung eines plattformspezifischen Zeichensatzes in Unicode berücksichtigt. In jedem XML-Dokument kann am Anfang in der XML-Deklaration eine bestimmte Zeichenkodierung für den Rest des Dokuments spezifiziert werden. XML-konforme Parser sind verpflichtet, beim Aufbau des Parse-Baums diese nativen Zeichenkodierungen in Unicode zu transformieren.
Auch in Java bieten die seit Version 1.1 verfügbaren Reader- und Writer-Klassen die erforderliche Funktionalität zur bidirektionalen Transformation zwischen Unicode und nativen Zeichensätzen. Bei diesen Klassen handelt es sich um Streams, die für das Lesen und Schreiben von Zeichendaten bestimmt sind und diese Daten unter Angabe einer Zeichenkodierung entsprechend wandeln können.
Die Unterstützung der UTF-8-Kodierung in den Stream-Klassen der Standardbibliothek, die Unicode-Zeichen in einer Sequenz von bis zu drei ASCII-Zeichen darstellt, ermöglicht auch das verlustfreie Lesen und Schreiben von Dokumenten, die den vollen Unicode-Zeichensatz ausnutzen.