DevTrain

Autor: Thomas Hauser

XML Export

Dieser Artikel beschäftigt sich mit dem Export von Daten in XML aus .NET Objekte.

Zunächst habe ich ein paar Klassen angelegt:

Um Daten in XML serialisieren zu können, verwendet man die XmlSerializer-Klasse aus dem Namensraum System.Xml.Serialization.

Dazu habe ich der Klasse Customers eine Methode ExportToXml hinzugefügt:

public string ExportToXml()

{

XmlSerializer xmls = new XmlSerializer(typeof(Customers));

MemoryStream ms = new MemoryStream();

xmls.Serialize(ms, this);

ms.Seek(0, 0);

StreamReader sr = new StreamReader(ms);

string xml = sr.ReadToEnd();

sr.Close();

return xml;

}

 

Da die XmlSerializer-Klasse mit einem Stream arbeitet, müssen die Daten zunächst temporär in einem MemoryStream gespeichert werden. Der Vorteil dieser Stream-Klasse ist, dass die Daten nicht auf Dateisystem gespeichert werden, sondern wie der Name schon sagt, im Speicher zwischengespeichert wird. Danach lesen wir mit dem StreamReader die XML-Daten wieder in einen string und geben diese zurück.

Über Attribute kann das Mapping zu XML gesteuert werden. So wir standardmäßig die generische List-Klasse als "ArrayOfCustomer"-Element serialisiert. Wenn an der Stelle "Customers" stehen soll, muss in der Customers-Klasse ein Attribut angegeben werden:

[XmlRoot("Customers")]

public class Customers : List<Customer>

{

    ...

}

 

Alle Eigenschaften werden standardmäßig als XML-Element serialisiert. Mit Attributen kann dies genau gesteuert werden. Beispiel: CustomerId:

[XmlAttribute()]

public string CustomerId

{

get { return customerId; }

set { customerId = value; }

}

 

Mit dem Attribut XmlIgnore() kann festgelegt werden, dass die Eigenschaft beim Serialisieren ignoriert werden soll.

Ergebnis:

Diese Methode ist einfach genial einfach für das Exportieren und Importieren von Daten. Des Weiteren wird natürlich hier im Vergleich zu "for xml" im SQL Server die Datenbank-Unabhängigkeit bewahrt.

Das komplette Beispiel kann unter http://downloads.hauserinfo.de/XmlSerializeDeserialize.zip heruntergeladen werden.

 

Thomas Hauser (http://thomashauser.spaces.live.com)


Erfasst am: 16.09.2007 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=1009
© Copyright 2003 ppedv AG - http://www.ppedv.de