c# - 将 DOM XmlElement 反序列化为 .NET 对象

标签 c# .net xml dom xml-deserialization

我有一个现有的应用程序,它将数据作为 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/

相关文章:

c# - 在 MVC 5 中的 Action Filters 中调用异步方法

c# - 具有平衡组的正则表达式

c# - 在默认浏览器中向自定义 URI 发送 POST 请求

c# - 如何在 vista 注册表中注册用 C# 编写的命名空间扩展

java - Android背景颜色从左到右过渡

android - 无效的可绘制标签动画矢量

c# - 遍历 Form 的所有控件,甚至是 GroupBoxes 中的控件

c# - Wpf UserControl 宽度和高度不 Taknig

c# - tabcontrol ownerdraw 更改 tabcontrol 的边框样式

javascript - jquery读取xml子节点上的多个xml属性