简体   繁体   中英

How do I serialize an object into an XDocument?

I have a class that is marked with DataContract attributes and I would like to create an XDocument from objects of that class. Whats the best way of doing this?

I can do it by going via an XmlDocument but this seems like an unnecessary step.

You can create an XmlWriter directly into the XDocument:

XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
    // write xml into the writer
    var serializer = new DataContractSerializer(objectToSerialize.GetType());
    serializer.WriteObject(writer, objectToSerialize);
}
Console.WriteLine(doc.ToString());

this is how i do it, which gives clean xml without all the namespace stuff in it,

 XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));

        using (var writer = xdoc.CreateWriter())
        {
            System.Xml.Serialization.XmlSerializer x =
            new System.Xml.Serialization.XmlSerializer(objecttoserialize.GetType());

            x.Serialize(writer, objecttoserialize);
        }

        Debug.WriteLine(xdoc.ToString());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM