søndag den 28. april 2013

Læse og skrive XML via XmlDocument C#

Der er en flere forskellige tilgange til arbejde med XML i C#. .NET stiller en række klasser til rådighed til at læse og skrive XML. En simpel metode jeg vil vise i dette eksempel er at XmlDocument fra System.Xml namespace.
Med XmlDocument arbejder man med et helt XML dokument i hukommelsen, det er derfor ikke ideelt at bruge XmlDocument til meget store XML filer. Ved store filer kan klasserne XmlTextReader og XmlTextWriter anvendes, de arbejder element for element.

Eksempel 1.


            XmlDocument doc = new XmlDocument();

            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);

            doc.AppendChild(declaration);

            XmlElement cmsElement = doc.CreateElement("", "cms", "");

            doc.AppendChild(cmsElement);

            XmlElement sprogElement = doc.CreateElement("", "sprog", "");

            cmsElement.AppendChild(sprogElement);

            XmlText sprogTekst = doc.CreateTextNode("dansk");

            sprogElement.AppendChild(sprogTekst);

            XmlElement domæneElement = doc.CreateElement("", "domæne", "");

            cmsElement.AppendChild(domæneElement);

            XmlText domæneTekst = doc.CreateTextNode("eksempel.dk");

            domæneElement.AppendChild(domæneTekst);

            XmlElement mappeElement = doc.CreateElement("", "mappe", "");

            cmsElement.AppendChild(mappeElement);

            XmlText mappeTekst = doc.CreateTextNode("min mappe");

            mappeElement.AppendChild(mappeTekst);

         doc.Save("c:/filer/gemher.xml");




Resultatet af koden er filen gemher.xml i mappen filer på c drev

Hvis filen åbnes med f.eks visual studio ser indhold således ud:

<?xml version="1.0" encoding="utf-8"?>
<cms>
  <sprog>dansk</sprog>
  <domæne>eksempel.dk</domæne>
  <mappe>min mappe</mappe>
</cms>

Instance metoden CreateXmlDeclaration danner dekleration til XML filen
Instance metoden AppendChild tilføjer element
Instance metoden CreateElement danner nyt element
Instance metoden Save gemmer XML fil
XmlDeclaration klassen repræsenterer en XML dekleration
XmlElement klassen repræsenterer et element
XmlText klassen repræsenterer en tekst


Forklaring:


XmlDocument doc = new XmlDocument();
Opretter nyt XmlDocument objekt doc

XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);
Opretter XmlDeclaration objekt declaration

doc.AppendChild(declaration);
Tilføjer declaration til XmlDocument doc


XmlElement cmsElement = doc.CreateElement("", "cms", "");
Opretter XmlElement objekt cmsElement dette element hedder cms i XML fil

doc.AppendChild(cmsElement);
Tilføjer cms til XmlDocument doc, dette bliver rod element i dokumentet

XmlElement sprogElement = doc.CreateElement("", "sprog", "");
Opretter XmlElement objekt sprogElement dette element hedder sprog i XML fil

cmsElement.AppendChild(sprogElement);
Tilføjer sprog som child til cms

.
.
.
Øvrige elementer tilføjes som child til rod element cms
.
.
.
doc.Save("c:/filer/gemher.xml");
Gemmer XmlDocument doc som xml fil på placering "c:/filer/gemher.xml"

XmlDocument sørger for formattering, som eks. at afslutte elementer.

Bemærk!
Der findes en anden klasse i .NET version 3.0 og derover XDocument der yderligere forenkler arbejdet med XML.

Ingen kommentarer:

Send en kommentar