XML ist eines der bekanntesten Datenaustauschformate. XML bedeutet Extensible Markup Language und erlaubt das Speichern von Daten in Textdateien in einem hierarchisch strukturierten Format. Dies wird zum Beispiel in den Konfigurationsdateien eines Visual Studio-Projekts genutzt – und auch XAML, die Sprache zum Definieren von WPF-Benutzeroberflächen, ist auf XML aufgebaut. Wenn Daten zwischen zwei nicht kompatiblen Systemen ausgetauscht werden sollen, kommt oft XML zum Einsatz. Auch wenn Sie Daten von einem Webservice abrufen wollen, kommen die Daten in vielen Fällen im XML-Format. Je nach Webservice können Sie diesem auch Daten im XML-Format schicken, die dann etwa durch Speichern in einer Datenbank weiterverarbeitet werden. Grund genug, sich XML einmal genauer anzusehen und zu schauen, welche Möglichkeiten .NET für das Lesen, Bearbeiten und Erstellen von XML-Dokumenten bietet.
Grundlagen zu XML
XML-Dokumente enthalten strukturierte Daten im ASCII-Format – so können Anwendungen von verschiedenen Plattformen den Inhalt verstehen. Dementsprechend können Sie XML-Dokumente auch in einem einfachen Texteditor öffnen und bearbeiten. XML-Dokumente, die als Datei gespeichert werden, erhalten die Dateiendung .xml, also beispielsweise Kunden.xml.
Ein XML-Dokument in Visual Studio anlegen
Auch wenn XML-Dokumente keinen speziellen Editor benötigen, wollen wir die Fähigkeiten von Visual Studio nutzen. Also öffnen Sie Visual Studio und legen mit Datei|Neu|Datei… eine neue Datei an. Wählen Sie im nun erscheinenden Dialog Neue Datei den Eintag XML-Datei aus. Dies fügt eine neue, leere XML-Datei namens XMLFile1.xml hinzu, die im Verzeichnis C:\Users\
Bild 1: Ein neues, leeres XML-Dokument
XML-Dokument als solches definieren
Damit ein XML-Dokument als solches erkannt werden kann, geben wir in der ersten Zeile einen sogenannten Prolog an. Dieser hat eine andere Syntax als die übrigen XML-Zeilen, der Ihnen von der Programmiersprache PHP bekannt vorkommen könnte:
<xml version="1.0" >
Hier können Sie zusätzlich noch die Kodierung des Dokuments angeben, hier zum Beispiel utf-8:
<xml version="1.0" encoding="utf-8">
Elemente eines XML-Dokuments
Wie im Screenshot oben zu sehen, enthält ein XML-Dokument neben der Zeile mit der XML-Version und der Kodierung also mindestens ein Element auf der obersten Ebene. Ein solches Element hat entweder ein öffnendes und ein schließendes Tag-Element (Starttag und Endtag) oder ein abgeschlossenes Tag-Element (Leertag). Zwischen dem öffnenden und dem schließenden Tag-Element befinden sich untergeordnete Elemente.
Ein abgeschlossenes Tag-Element enthält keine weiteren untergeordneten Elemente. Ein Element mit öffnendem und schließendem Tag sieht wie folgt aus:
<Beispielelement></Beispielelement>
Der Name des Elements muss im öffnenden wie im schließenden Tag genau gleich geschrieben sein – das gilt auch für Groß- und Kleinschreibung. Das geschlossene Element sieht so so:
<Beispielelement />
Das Element wird durch den Schrägstrich vor dem Größer-Zeichen als abgeschlossen markiert. Beide Varianten reichen Visual Studio schon aus, um die Fehlermeldung verschwinden zu lassen. Jedes offene Element kann ein oder mehrere Unterelemente enthalten:
<Hauptelement> <Unterelement /> <Unterelement></Unterelement> </Hauptelement>
Hauptelement und Unterelement sind die Namen der Elemente. Die eigentlichen Daten werden an zwei Stellen gespeichert: in Attributen oder als Werte von Elementen. Attribute werden innerhalb des öffnenden Tags hinter dem Elementnamen angegeben, und zwar durch Attributname und Attributwert. Jeder Attributname darf nur einmal je Element vorkommen, der Attributwert muss in Hochkommata oder Anführungszeichen angegeben werden:
<Hauptelement Beispielattribut="Beispielwert"></Hauptelement>
Bei geschlossenen Elementen landet das Attribut ebenfalls hinter dem Elementnamen:
<Hauptelement Beispielattribut="Beispielwert" />
Außerdem können Sie für jedes Element alternativ zu weiteren untergeordneten Elementen auch eine Zeichenkette als Wert des Elements angeben:
<Elementname>Elementinhalt</Elementname>
Ein Element mit einer Zeichenkette als Inhalt kann keine weiteren Elemente enthalten.
Elementnamen verwenden
Für die Elementnamen gelten bestimmte Regeln:
- Der Elementname folgt unmittelbar auf die öffnende spitze Klammer beziehungsweise beim schließenden Tag hinter dem Schrägstrich.
- Der Elementname darf keine Leerzeichen enthalten.
- Der Elementname darf Buchstaben, Ziffern, Unterstrich, Bindestrich, Punkt und Doppelpunkt enthalten. Doppelpunkte dürfen allerdings nur hinter Namespaces angegeben werden – mehr dazu weiter unten. Als erstes Zeichen dürfen nur Buchstaben zum Einsatz kommen.
- Der Elementname darf nicht mit einer Ziffer oder mit der Zeichenfolge xml beginnen (letzteres wird von Visual Studion nicht bemängelt).
Wohlgeformtheit von XML-Dokumenten
Die wichtigsten Kriterien für die Wohlgeformtheit eines XML-Dokuments lauten also:
- Das Dokument muss eine Verarbeitungsanweisung enthalten (
). - Das Dokument besitzt in der ersten Ebene genau ein Element.
- Jedes Element muss geschlossen werden (
oder ) - Start- und Endtags müssen den gleichen Namen haben, auch bezüglich der Groß- und Kleinschreibung.
- Die Start- und Endtags werden paarweise verschachtelt, das heißt, alle innerhalb eines übergeordneten Elements angelegten Unterelemente müssen erst wieder geschlossen werden, bevor das übergeordnete Element geschlossen wird.
Unterschied zwischen Attributen und Elementen
Wenn Sie als Wert eine einfache Zeichenkette verwenden wollen, können Sie diese gleichwertig für ein Attribut oder für ein Unterelement angeben. Ein Kunde-Element mit Vorname und Nachname würde mit Attributen so aussehen:
<Kunde Vorname="Andre" Nachname="Minhorst"></Kunde>
Sie können Vorname und Nachname jedoch auch in untergeordneten Elementen darstellen:
<Kunde> <Vorname>Andre</Vorname> <Nachname>Minhorst</Nachname> </Kunde>
Wenn ein Element allerdings einen Text enthalten soll, können Sie diesem keine weiteren Unterelemente hinzufügen – dann müssen Sie zusätzliche Informationen als Attribut angeben:
<Artikel Artikelnummer="123">Access im Unternehmen</Artikel>
Kommentare
Wenn Sie Kommentare zu einem XML-Dokument hinzufügen wollen, beginnen Sie diesen mit , also genau wie unter HTML:
<!--Dies ist ein Kommentar.-->
Texte in Elementen
Wenn ein Element oder ein Attribut eines Elements einen Text enthält, können Sie dafür alle möglichen Zeichen verwenden – mit wenigen Ausnahmen, nämlich dem Größer- und dem Kleiner-Zeichen, dem Und-Zeichen, dem Hochkomma und dem Anführungszeichen. Diese müssen Sie durch bestimmte andere Zeichenkombinationen ersetzen:
- Und-Zeichen (&): Ersetzen durch &
- Kleiner-Zeichen (<): Ersetzen durch <
- Größer-Zeichen (>): Ersetzen durch >
- Hochkomma (‘): Ersetzen durch '
- Anführungszeichen (“): Ersetzen durch "
Sonderzeichen trotzdem verwenden mit CData
Wenn Sie Sonderzeichen wie die oben beschriebenen dennoch verwenden wollen, gibt es eine Alternative. Dazu verwenden Sie einen CData-Abschnitt als Inhalt eines Elements. Der CData-Abschnitt beginnt mit <![CDATA[ und endet mit ]]>.
Dazwischen können Sie Texte mit beliebigen Zeichen platzieren, also auch solche wie die oben genannten Sonderzeichen:
<ElementMitSonderzeichen><![CDATA[Die Sonderzeichen <, >, &, ', " sind hier erlaubt.]]></ElementMitSonderzeichen>
Die einzige Ausnahme ist die Zeichenfolge ]]>, denn diese zeigt das Ende des CData-Abschnitts an. Der Rest des eigentlichen CData-Abschnitts würde dann als Fehler interpretiert werden. Die Verwendung von CData-Abschnitten eignet sich beispielsweise, um ein XML-Dokument innerhalb des Elements eines XML-Dokuments einzufügen.
Namespaces für eindeutige Zuordnung verwenden
Namespaces verwendet man, um Verwechslungen gleichnamiger Elemente zu verhindern. Wenn Sie beispielsweise in einem XML-Dokument sowohl Kunden als auch Lieferanten verwalten und beide enthalten Elemente namens Firma, dann könnte es beim Zugriff auf dieses Element zu Verwechslungen kommen. Es kann auch sein, dass Sie in Ihren eigenen XML-Dokumenten sehr genau darauf achten, dass alle Elemente eine eindeutige Bezeichnung haben. Vielleicht fügt aber ein Nutzer Ihres XML-Dokuments dieses mit einem anderen XML-Dokument zusammen und erhält dann doppelte Bezeichnungen für Elemente mit unterschiedlichen Bedeutungen. In folgendem Beispiel wird das deutlich:
<xml version="1.0" encoding="utf-8"> <Bestellverwaltung> <Kunden> <Kunde> <Firma>André Minhorst Verlag</Firma> </Kunde> ... </Kunden> <Lieferanten> <Lieferant> <Firma>Beispiellieferant GmbH</Firma> </Lieferant> ... </Lieferanten> </Bestellverwaltung>
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: