Vorgehensweise: Serialisieren mit XmlSerializer (C#)How to: Serialize Using XmlSerializer (C#)

Dieses Thema enthält ein Beispiel, das zum Serialisieren und Deserialisieren XmlSerializer verwendet.This topic shows an example that serializes and deserializes using XmlSerializer.

BeispielExample

Im folgenden Beispiel wird eine Reihe von Objekten erstellt, die XElement-Objekte enthalten.The following example creates a number of objects that contain XElement objects. Anschließend serialisiert das Beispiel diese Objekte in einen Speicherstream und deserialisiert sie von dort wieder:It then serializes them to a memory stream, and then deserializes them from the memory stream.

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:This example produces the following output:

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 auchSee Also

Serialisieren von Objektdiagrammen, die XElement-Objekte enthalten (C#)Serializing Object Graphs that Contain XElement Objects (C#)