序列化是将对象状态转换为可存储或可传输的格式的过程。在C#中,可以使用XmlSerializer
类或DataContractSerializer
类将XDocument
对象序列化为XML字符串或流。
以下是使用XmlSerializer
将XDocument
对象序列化为XML字符串的示例代码:
using System;
using System.IO;
using System.Xml.Linq;
using System.Xml.Serialization;
public class Program
{
public static void Main()
{
XDocument xdoc = new XDocument(
new XElement("Root",
new XElement("Child", "Content")
)
);
XmlSerializer serializer = new XmlSerializer(typeof(XDocument));
using StringWriter sw = new StringWriter();
serializer.Serialize(sw, xdoc);
string xmlString = sw.ToString();
Console.WriteLine(xmlString);
}
}
以上代码将输出以下XML字符串:
<?xml version="1.0" encoding="utf-16"?>
<Root>
<Child>Content</Child>
</Root>
以下是使用DataContractSerializer
将XDocument
对象序列化为流的示例代码:
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml.Linq;
public class Program
{
public static void Main()
{
XDocument xdoc = new XDocument(
new XElement("Root",
new XElement("Child", "Content")
)
);
DataContractSerializer serializer = new DataContractSerializer(typeof(XDocument));
using MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, xdoc);
ms.Position = 0;
using StreamReader sr = new StreamReader(ms);
string xmlString = sr.ReadToEnd();
Console.WriteLine(xmlString);
}
}
以上代码将输出以下XML字符串:
<XDocument xmlns="http://schemas.datacontract.org/2004/07/System.Xml.Linq"><Declaration>
<Version>1.0</Version>
<Encoding>utf-8</Encoding>
<Standalone>yes</Standalone>
</Declaration><Root>
<Child>Content</Child>
</Root></XDocument>
请注意,DataContractSerializer
序列化的XML字符串与原始XDocument
对象的XML字符串略有不同。
领取专属 10元无门槛券
手把手带您无忧上云