XML

Was ist XML ?

XML ist eine Beschreibung zur Speicherung von Informationen jeglicher Art in Dateien zum einfachen Austausch und der Weiterverarbeitung. XML wird ähnlich wie HTML mit Tags aufgebaut. Allerdings sind hier sehr strikte Regeln zu beachten. So muss jedes geöffnete Token auch wieder geschlossen werden. Die obige CSV-Datei könnten z.B. so aussehen:

Es muss in einer XML-Datei immer genau einen ROOT-Knoten geben. Der muss natürlich nicht <root> heißen. Zur Vereinfachung habe ich hier auf Definitionen zum Zeichensatz oder einem Stylesheet weg gelassen.

Im XML-Format gespeicherte Daten müssen aber nicht zwingend als Datei vorliegen. Auch Tabellen in Datenbanken, die METABASE des IIS aber auch HTML-Anfragen an Exchange mittels WebDAV nutzen XML-Pakete. XML verbindet den universalen Ansatz zum Datenaustausch mit einer klaren Struktur und bietet damit eine sehr hohe Flexibilität und Interoperabilität

XML mit XSL konvertieren

Nur was macht man nun mit der neuen Freiheit ? Natürlich kann eine andere Software nun einfach diese Daten importieren und exportieren. Aber zusammen mit der Definition von XML wurden auch so genannte Stylesheets definiert. Diese beschreiben z.B.: eine Umformatierung. Mit folgendem Stylesheet würde aus dem XML-File eine HTML-Tabelle.

Der XML-Parser liest die XML und die darin spezifizierte XSL-Datei ein und generiert daraus eine Ausgabe. Der Internet Explorer ist ein solcher Parser und beim Doppelklick auf die XML-Datei erhalten Sie folgende Ausgabe:

Das ist eine einfache Funktion, um aus dem reinen Datenformat XML eine entsprechende Ausgabe zu erstellen. Es gibt mittlerweile auch XSL-Stylesheets, die z.B. Word, Excel oder PDF-Dokumente erzeugen. Die Grenzen sind noch nicht abzusehen. Hier die Dateien zum Download:

code/xmlsample.xml Die XML-Datei mit den Adressdaten
code/xmlsample.xsl Ein Stylesheet zur Konvertierung nach HTML

Bitte beachten Sie, dass Sie die Erweiterung "TXT" erst entfernen.

Dies Flexibilität hat mich auch nach einiger Zeit dazu bewogen, dass viele Programme ihre Ausgaben nicht mehr alleine auf den Bildschirm, einfache Textdateien oder CSV-Dateien schreiben, sondern die Ausgabe der aufbereiteten Daten als XML viel flexibler ist. Mit dem passenden Stylesheet ist nahezu jede Weiterverarbeitung möglich. Das geht soweit, dass Sie die beiden Dateien einfach auf ihren IIS kopieren und beim Aufruf der XML-Datei diese vom Webserver konvertiert und an den Client ausgeliefert wird.

Natürlich sind XML-Dateien größer als ein proprietäres binäres Format. Es hindert Sie ja auch niemand daran, ihre Daten nicht als XML zu speichern, aber erst die Speicherung als XML erlaubt eine einfache weitere Verarbeitung und darauf kommt es in Zukunft ja auch an. XML ist das Bindeglied zwischen Prozessen, Diensten und auch Betriebssystemen.

XML als Programmierer

Wenn Sie nun von XML begeistert sind, dann stellen Sich natürlich die Frage,wie sie selbst in ihren Programmen XML lesen, schreiben und verarbeiten. Es gibt natürlich von Microsoft für Windows entsprechende Bibliotheken, so dass Sie nicht selbst mit Textdateien handtieren müssen. Entsprechende Beispiele finden Sie in der MSDN und vielen anderen Quellen.

Das .NET Framework enthält mit dem XMLWriter eine sehr einfache Klasse, die das schnelle Erstellen von XML-Dateien erlaubt. Folgende Zeilen würden ebenfalls die oben verwendete XML-Datei erstellen.

xmlWriter = New XmlTextWriter("C:\temp\test.xml", Nothing)

xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 4
xmlWriter.IndentChar = " "

xmlWriter.WriteStartElement("root")

xmlWriter.WriteStartElement("Element")
xmlWriter.WriteAttributeString("id", "1")
xmlWriter.WriteElementString("Vorname", "Frank")
xmlWriter.WriteElementString("Name", "Carius")
xmlWriter.WriteElementString("Strasse", "Hegselweg")
xmlWriter.WriteElementString("PLZ", "33415")
xmlWriter.WriteElementString("Ort", "Verl")
xmlWriter.WriteEndElement()

xmlWriter.WriteStartElement("Item")
xmlWriter.WriteElementString("Vorname", "Ingrid")
xmlWriter.WriteElementString("Name", "Mantke")
xmlWriter.WriteElementString("Strasse", "Hegselweg")
xmlWriter.WriteElementString("PLZ", "33415")
xmlWriter.WriteElementString("Ort", "Verl")
xmlWriter.WriteEndElement()

xmlWriter.WriteEndElement()
xmlWriter.Close()

XML und VBScript

Leider gibt es eine solch einfache Klasse nicht von Hause auch für VBScript. Mit VBScript können Sie z.B.: folgendes machen

Set objDoc = CreateObject("Microsoft.XMLDOM")
Dim objchild
Set objchild = objDoc.createNode(1, "Root", "")
objDoc.documentElement.appendChild(objchild)
objDoc.Save strFile
Set objchild = Nothing

Das ganze stellt sich noch etwas komplexer da, wenn Sie mehrere Ausgaben anfügen wollen. Daher habe ich mir selbst eine VBScript-Klasse gebaut, die etwas ähnliches wie der XMLWriter und .NET bereit stellt.

xmlclass.vbs.txt XML-Classe mit Beispielcode

Hiermit sollte es in ihren eigenen VBScript Projekten ein einfaches sein, einfache XML-Dateien zu schreiben. Die Klasse sorgt dafür, dass die fünf Sonderzeichen, die in XML umkodiert werden müssen, auch umcodiert werden. Wenn jemand die Klasse erweitert, so dass die restlichen Funktionen ebenfalls vorhanden sind, dann würde ich gerne einen Hinweis bzw. eine Kopie erhalten.