XML - Dateien generieren mit Java
XML gehört mittlerweile nicht nur im Internet zu den wichtigsten Datenaustauschformaten. Die klare maschinenlesbare Struktur einerseits und gleichzeitig der Vorteil, dass sich bei Bedarf auch der Anwender direkt einen Überblick verschaffen kann, haben wesentlich zur hohen Verbreitung des Formates beigetragen.
Zur Generierung von XML-Dateien bzw. zum Speichern der in ihnen abgelegten Daten eignen sich Bäume optimal. Jeder Knoten stellt dabei einen Tag dar, welcher entweder einen Wert beinhaltet oder aber beliebig viele Nachfolger. Zusätzlich kann jeder Tag n Attribute haben. Nachfolger und Attribute realisiert man am Besten mit Hilfe von Listen, da so das Hinzufügen von n Elementen keine Probleme bzgl. maximaler Länge macht.
Die Klasse für so einen Knoten könnte folgendermaßen implementiert werden:
class Knoten
{
XMLTagsListe nachfolger;
XMLAttributeListe a;
String tag;
String wert;
void AddNachfolger(Knoten k);
void AddAttribut(String attribut, String wert);
void AddWert(String wert);
}
XMLTagsListe und XMLAttributeListe sind Listen, deren Elemente auf die Nachfolger des Knotens bzw. auf Objekte zeigen, welche die Attribute (Name und Wert) abspeichern.
Zum Ausdrucken der XML-Datei mit den im Baum gespeicherten Daten eignet sich ein an den Pre-Order-Tiefendurchlauf angelehnter Durchlauf. Beim Eintritt in den Knoten wird zuerst der Tag ausgegeben, anschließend eventuell vorhandene Attribute. Falls es Nachfolger gibt, wird die Liste der Nachfolger mit einer While-Schleife durchlaufen und für jeden Knoten wieder die Print - Methode rekursiv aufgerufen. Falls es keine Nachfolger gibt wird der gespeicherte Wert ausgegeben. Beim Verlassen des Knotens folgt dann die Ausgabe zum Schließen des Tags. So ergibt sich dann rekursiv das komplette XML-Dokument, welches die gespeicherten Daten repräsentiert.
Das Einfügen eines neuen Tags in den Baum ist (noch) nicht elegant. Da der Baum keinerlei Sortierung aufweist weiß die Klasse beim Hinzufügen natürlich nicht, wo der neue Tag eingefügt werden soll. Der Add - Routine muss also der Elternknoten mitgegeben werden. Das verlangt vom Programmierer eine eigene Datenhaltung für Verweise in den Baum, um neue Tags an der richtigen Stelle einfügen zu können.
Eine erste Version der Java-Klasse zum Verwalten von XML-Daten in Bäumen kann hier heruntergeladen werden: XMLTree.java
Geschrieben am 24.03.2007 von Stefan Schlichthärle | Kommentar hinzufügen | Tags: Java Programmieren Projekte
