Codefieber.de

IT-Blog

XML mit der XmlWriter Klasse schreiben

| Keine Kommentare

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 übersetzen. Vor dem Schließen, schreiben wir ein weiteres Startelement “user”, welches dann ein Kind-Element der “users” werden wird. Wir fügen dann das Attribut (age) dem Element mit der Write()-Methode hinzu. Danach schreiben wir den innerText des Elements, durch Aufruf der Writestring()-Methode. Danach stellen wir sicher das das erste “user”-Element geschlossen wird. Dies geschieht mit dem Aufruf der WriteEndElement()-Methode.

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.

avatar

Autor: Pascal

Codefieber.de wird von Pascal Betke geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.