我有一个现有的应用程序,它将数据作为 XML DOM 模型进行操作。我现在想将该数据作为 C# 对象的集合传递给另一个子系统。
据我所知,我可以将 DOM 表示序列化为 MemoryStream,并使用 XmlSerializer 反序列化该流。当然有一种方法可以直接处理 DOM 表示,而不需要中间的文本表示吗?但我找不到它。
如何在 DOM 表示上使用 System.Xml.Serialization?
最佳答案
听起来您想将 XmlDocument 投影到自定义集合中。您可以使用 XmlSerializer.Deserialize 来完成此操作,但它要求您的 XmlDocument 的结构与集合成员很好地对齐。
如果这是真的,那么使用 XmlSerializer.Deserialize Method
是使用 XmlNodeReader
的完美方法。
例如
XmlDocument xdoc = GetAnXmlDocument();
XmlSerializer serializer = new XmlSerializer(typeof(SomeCollection));
SomeCollection coll = xSerializer.Deserialize(new XmlNodeReader(xdoc));
但是,如果您发现 XmlDocument 与您的集合不一致,您可能只想使用 Linq-to-xml并做任何你喜欢的投影。
关于c# - 将 DOM XmlElement 反序列化为 .NET 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405060/