TOC

This article has been localized into German by the community.

XML:

XML mit der XmlWriter-Klasse ausgeben

Bisher haben wir uns auf das Lesen von XML-Dokumenten beschränkt. Jetzt beginnen wir damit, XML-Dokumente zu erzeugen. XML-Dateien sind nichts anderes als Textdateien. Deshalb könnte man den XML-Code enfach in eine Datei schreiben und diese dann mit einer xml-Erweiterung versehen. Es ist aber leichter und sicherer, dafür das .net Framework zu verwenden. Dafür gibt es mindestens zwei Möglichkeiten: XmlWriter und XmlDocument. Wir konzentrieren uns hier auf die erste Variante und behandeln die XmlDocument-Klasse im nächsten Kapitel.

Der Unterschied der beiden Möglichkeiten liegt vor allem im Speicherbedarf. XmlWriter benötigt weniger Platz als XmlDocument, was aber nur bei sehr großen Dateien relevant ist. Ein weiterer wichtiger Unterschied ist die Tatsache, dass man mit XmlDocument ein Dokument einlesen, bearbeiten und wieder zurückschreiben kann. Mit XmlWriter muss man das gesamte Dokument jedesmal von Anfang bis Ende neu schreiben. Das muss aber nicht unbedingt ein Problem sein. Wie immer hängt es von der Situation und von persönlichem Geschmack ab.

Hier ist ein Beispiel für die Erzeugung von XML mit der XmlWriter-Klasse:

using System;
using System.Text;
using System.Xml;

namespace WritingXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlWriter xmlWriter = XmlWriter.Create("test.xml");

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("users");

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "42");
            xmlWriter.WriteString("John Doe");
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "39");
            xmlWriter.WriteString("Jane Doe");

            xmlWriter.WriteEndDocument();
            xmlWriter.Close();
        }
    }
}

Damit erzeugt man die folgende XML-Datei

<users>
  <user age="42">John Doe</user>
  <user age="39">Jane Doe</user>
</users>

Wir beginnen also mit der Erzeugung einer Instanz der XmlWriter-Klasse. Man braucht dafür midestens einen Parameter, welcher in diesem Fall der Pfad der Ziel-Datei ist. Es gibt aber viele Varianten für verschiedene Zwecke. Als erstes wird die WriteStartDocument()-Methode aufgerufen. Dann schreiben wir ein Startelement mit der Bezeichnung "users", was der XmlWriter in <users> übersetzt. Bevor das Element geschlossen wird, schreiben wir ein weiteres Startelement "user", das zu einem Child-Element von "users" wird. Mit WriteAttributeString() fügen wir ein Attribut hinzu und schreiben den inneren Text mit der WriteString()-Methode. Mit der WriteEndElement()-Methode schließen wir das erste "user"-Element ab.

Dieser Vorgang wird wiederholt, um einen weiteren "user" einzufügen. Diesmal kann man aber den Aufruf von WriteEndElement() weglassen. Eigentlich müssten hier zwei solche Aufrufe erfolgen, da ja auch noch das "users"-Element offen ist. Dies erledigt aber der XmlWriter für uns, wenn wir die WriteEndDocument()-Methode aufrufen.

Die Methode Close() bewirkt, dass der XmlWriter unsere Daten auf die Festplatte schreibt. Jetzt kann man die Datei "test.xml" in dem selben Ordner öffnen, in dem sich die EXE-Datei des Projekts befindet. Meistens liegt dieser Ordner im bin\debug-Verzeichnis.

Das ist wirklich alles was man braucht, um eine einfache XML-Datei zu erstellen. Im nächsten Kapitel machen wir das selbe mit der XmlDocument-Klasse.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!