Vorgehensweise: Serialisieren mit XmlSerializer (C#)

Dieses Thema enthält ein Beispiel, das zum Serialisieren und Deserialisieren XmlSerializer verwendet.

Beispiel

Im folgenden Beispiel wird eine Reihe von Objekten erstellt, die XElement-Objekte enthalten. Anschließend serialisiert das Beispiel diese Objekte in einen Speicherstream und deserialisiert sie von dort wieder:

using System;  
using System.IO;  
using System.Linq;  
using System.Xml;  
using System.Xml.Serialization;  
using System.Xml.Linq;  

public class XElementContainer  
{  
    public XElement member;  

    public XElementContainer()  
    {  
        member = XLinqTest.CreateXElement();  
    }  

    public override string ToString()  
    {  
        return member.ToString();  
    }  
}  

public class XElementNullContainer  
{  
    public XElement member;  

    public XElementNullContainer()  
    {  
    }  
}  

class XLinqTest  
{  
    static void Main(string[] args)  
    {  
        Test<XElementNullContainer>(new XElementNullContainer());  
        Test<XElement>(CreateXElement());  
        Test<XElementContainer>(new XElementContainer());  
    }  

    public static XElement CreateXElement()  
    {  
        XNamespace ns = "http://www.adventure-works.com";  
        return new XElement(ns + "aw");  
    }  

    static void Test<T>(T obj)  
    {  
        using (MemoryStream stream = new MemoryStream())  
        {  
            XmlSerializer s = new XmlSerializer(typeof(T));  
            Console.WriteLine("Testing for type: {0}", typeof(T));  
            s.Serialize(XmlWriter.Create(stream), obj);  
            stream.Flush();  
            stream.Seek(0, SeekOrigin.Begin);  
            object o = s.Deserialize(XmlReader.Create(stream));  
            Console.WriteLine("  Deserialized type: {0}", o.GetType());  
        }  
    }  
}  

Dieses Beispiel erzeugt die folgende Ausgabe:

Testing for type: XElementNullContainer  
  Deserialized type: XElementNullContainer  
Testing for type: System.Xml.Linq.XElement  
  Deserialized type: System.Xml.Linq.XElement  
Testing for type: XElementContainer  
  Deserialized type: XElementContainer  

Siehe auch

Serialisieren von Objektdiagrammen, die XElement-Objekte enthalten (C#)