Hallo,
- du benutzt den Namespace System.Xml.Serialization
- du benutzt die Klasse XmlSerializer daraus mit den geeigneten Methoden
- du brauchst Klassen, die zu dem Xml korrespondieren
- du deklarierst die zu serialisieren Member deiner Klasse als Public
- du zeichnest die zu serialisierenden Member deiner Klasse mit XmlSerializer Attributen aus (XmlElementAttribute, XmlAttributeAttribute, XmlRoot)
- du sorgst dafür das verschachtelte Typen ebenfalls serialisierbar sind
Überigens, Hashtables können je nach .Net Framework nicht automatisch Xml-serialisiert werden.
[XmlRoot("Data")]
class Data
{
[XmlArrayItem("ORTE")]
public Ort[] Orte;
[XmlArrayItem("PERSON")]
public Ort[] Orte;
// .. anderes zeugs
}
class Ort
{
[XmlElement]
public string NAME;
}
class Person
{
[XmlElement]
public string NAME;
}
using System.Xml.Serialization;
using System.IO;
using System.Text;
class Worker
{
static void Main()
{
Data yourDataObject = new Data();
// ...
XmlSerializer s = new XmlSerializer(typeof(Data));
StringBuilder sb = new StringBuilder();
s.Serialize(new StringWriter(sb), yourDataObject);
string serializedData = sb.ToString();
}
Ungeprüft, frei nach Dr. Blume.
Genauso wie es eine Serialize() Methode gibt, gibt es auch das Gegenteil. Wenn du dir die Arbeit mit der Klassendefinition sparen möchtest, verwendest du das Utility xsd.exe aus dem .Net SDK. Es generiert dir C# Code (Klassen und Members) anhand von XML oder XSD Dateien. (in beide Richtungen).
Ciao, Frank