XML-Dokumente generieren

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Ein Bereich der XML-Entwicklung, der oft nicht angesprochen wird, ist das Generieren von XML-Dokumenten, die von anderen Anwendungen verwendet werden. Obwohl es verschiedene Verfahren für die Verarbeitung von XML-Dokumenten gibt, werden zur Zeit relativ wenige Techniken eingesetzt, um neue Dokumente zu erzeugen.

Eines der einfachsten (und am weitesten verbreiteten) Verfahren ist, die String- und/oder Dateiverarbeitungsfähigkeiten der verwendeten Entwicklungsumgebung einzusetzen, um ein XML-Dokument direkt aufzubauen. Dieses Verfahren hat den Vorteil, dass es leicht zu verstehen, effizient und für jeden Programmierer sofort verfügbar ist. Diese Java-Anweisung gibt ein einfaches XML-Dokument in einen Dateiausgabe-Stream aus:

FileWriter out = new FileWriter("nachricht.xml");
out.write("<nachricht>Hallo Welt!</nachricht>");

Man erkennt ohne Probleme, wie dieses Verfahren in einer beliebigen anderen Programmiersprache implementiert werden würde. In C++ erzeugt beispielsweise die folgende Anweisung das gewünschte Ergebnis:

ofstream fout;
fout.open("nachricht.xml", ios::app);
fout << "<nachricht>Hallo Welt!</nachricht>";

Das ist ein absolut zulässiges Verfahren, und Sie sollten es in Betracht ziehen, wenn das XML-Dokument nicht zu komplex ist und die Struktur des Dokuments während der Lebensdauer der Anwendung nicht erheblich ändert. Der Nachteil dieses Verfahrens ist, dass es damit viel leichter ist, ein Dokument zu generieren, das nicht wohlgeformt oder nicht gültig ist, denn es findet keine Validierung oder Verifizierung der Struktur des Dokuments statt, während es generiert wird. Wenn Sie diese Technik einsetzen, müssen Sie natürlich sicherstellen, dass der Code und die einkommenden Daten wohlgeformtes XML hervorbringen.

Anmerkung: Wenn Ihnen all diese Datenvalidierung wie ein Durcheinander erscheint, sollten Sie einen Blick auf Genx werfen. Das ist eine C-Bibliothek, die von Tim Bray, einem der Verfasser der XML-Spezifikation, geschrieben wurde und die Canonical XML generiert.

Bei einem anderen verbreiteten Verfahren wird eine baumbasierte API, wie das DOM verwendet, um dynamisch einen XML-Dokumentbaum aufzubauen. Der Vorteil dieses Verfahrens ist, dass die Bibliothek die Wohlgeformtheitsbedingungen erzwingt und bei DOM Level 3 so konfiguriert werden kann, dass sie ebenfalls Gültigkeitsbedingungen erzwingt.

Der Nachteil des Bibliotheksverfahrens ist, dass es sehr oft komplexer und weniger effizient als das einfache stringverarbeitungsbasierte Verfahren ist. Dieses Code-Fragment erzeugt das gleiche Dokument wie oben, verwendet aber diesmal DOM:

DOMImplementation di;
...
di.createDocument(null, null, null);
Document doc;
Element elMsg = doc.createElement("nachricht");
elMsg.appendChild(doc.createTextNode("Hallo Welt!"));
doc.appendChild(elMsg);
LSSerializer lss;
. . .
FileWriter out = new FileWriter("nachricht.xml");
out.write(lss.writeToString(doc));

Das ist etwas komplexer als das einfache stringbasierte Verfahren, das oben vorgestellt wurde.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de