【发布时间】:2020-12-03 17:37:21
【问题描述】:
查看下面的代码,我想看看如何从 xsd.exe 生成的对象模型中提供 XmlDocument:
var myModelObj = new MyModel();
var xmlDoc = new XmlDocument();
string xmlStr = null;
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
System.IO.StringWriter sw = new System.IO.StringWriter();
using (var xmlWriter = XmlWriter.Create(sw))
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Models.MyModel));
serializer.Serialize(xmlWriter, myModelObj);
xmlWriter.Flush();
// xmlDoc = ______________ ????
xmlStr = sw.ToString();
}
目的是使用 xml(XmlDocument?)为内存存储提供服务,我最终可以使用它来生成加密流或文件输出。谢谢!
更新:
这行得通吗?
xmlDoc.Load(sw.ToString());
有没有办法更直接地从 XmlSerializer 的 Serialize 方法生成 XmlDocument 输出?
【问题讨论】:
-
你可以使用
XmlNodeExtensions.SerializeToXmlDocument()从this answer到How to create sets of the serialized objects C#。 -
或查看this answer 和this answer also 到How to create an XML document from a .NET object?,尽管未被接受,但它们是更好的答案,并展示了如何通过序列化直接创建
XmlDocument。
标签: c# xml serialization stream xmldocument