DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Thomas Hauser Artikel Drucken
        
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:

  • Customer: Stellt einen Kunden aus der Northwind-Datenbank dar.
  • Address: Stellt eine Adresse dar, die in der Klasse Customer verwendet wird.
  • Customers: Erbt von List<Customer> und stellt somit eine Auflistung von Kunden dar

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)


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 16.09.2007
  Gültig bis: 15.12.2007
2 Ratings
Bewertung: 80,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG