Da XML einfacher Text ist, könnte man einfach XML-Tags in eine Datei schreiben und dieser eine XML-Erweiterung geben, allerdings ist es einfacher und sicherer eine XML von dem .NET-Framework erstellen zu lassen. Genau wie mit dem Lesen von XML, gibt es mindestens zwei verschiedene Möglichkeiten: Der XmlWriter-Ansatz und der XmlDocument-Ansatz. Dieser Artikel wird sich auf den ersten Ansatz konzentrieren.
Der Unterschied zwischen den beiden Methoden ist wieder einmal vor allem auf den Speicherbedarf bezogen – XmlWriter benötigt weniger Speicher als XmlDocument. XmlDocument ist nur ein Thema wenn man sehr große Dateien schreiben möchte. Ein weiterer wichtiger Unterschied ist, dass bei der Verwendung von XmlDocument, dass man eine vorhandene Datei lesen, manipulieren und die Änderungen schreiben kann. Mit der XmlWriter-Klasse, muss das gesamte Dokument jedes Mal neu geschrieben werden. Dies ist nicht unbedingt ein Problem, es kommt halt darauf an, was man wirklich in der jeweiligen Situation benötigt.
Hier ist ein Beispiel um eine XML zu schreiben, welche die XmlWriter Klasse nutzt:
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(); } } }
Mit dem oberen Code wird nachfolgende XML erzeugt:
<users> <user age="42">John Doe</user> <user age="39">Jane Doe</user> </users>
Also, beginnen wir mit der Erstellung einer Instanz der XmlWriter-Klasse. Es wird ein Parameter übergeben, in diesem Fall der Pfad, wohin die XML geschrieben werden soll.
Das Erste was wir tun sollten, ist die Write()-Methode aufzurufen.
Danach schreiben wir ein Start-Element namens “users”. Die XmlWriter-Klasse wird dies in
Dieser Prozess wird wiederholt, um einen weiteren Benutzer hinzufügen, außer das wir WriteEndElement() nicht aufrufen, wie zuvor. In der Tat haben wir dann ein offenes “user”-Element, aber die XmlWriter-Klasse wird das Element für uns schließen, wenn wir die WriteEndDocument()-Methode aufrufen.
Damit der unsere Daten auf die Festplatte geschrieben werden, rufen wir die Close()-Methode auf. Jetzt kann die Datei “test.xml” geöffnet werden. Diese befindet sich im gleichen Verzeichnis, in dem die EXE-Datei des Projekts liegt. In der Regel ist es das ..\bin\Debug-Verzeichnis.
Und das ist wirklich alles, was es braucht, um eine einfache XML-Datei zu schreiben.