我有一个C#类,我想使用XMLSerializer序列化.但我想将它序列化为XMLElement或XMLDocument.这是可能的还是我必须将它序列化为String,然后将字符串解析回XMLDocument?
Dav*_*sen 28
我也有这个问题,Matt Davis提供了一个很好的解决方案.只需发布一些代码片段,因为还有一些细节.
public static XmlElement SerializeToXmlElement(object o)
{
XmlDocument doc = new XmlDocument();
using(XmlWriter writer = doc.CreateNavigator().AppendChild())
{
new XmlSerializer(o.GetType()).Serialize(writer, o);
}
return doc.DocumentElement;
}
Run Code Online (Sandbox Code Playgroud)
public static T DeserializeFromXmlElement<T>(XmlElement element)
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new XmlNodeReader(element));
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个新的XmlDocument,然后调用CreateNavigator().AppendChild().这将为您提供一个XmlWriter,您可以将其传递给将转储到doc根目录的Serialize方法.