如何从xml反序列化数据,以及如何根据xml元素名称动态创建类

本文关键字:xml 元素 动态 创建 反序列化 数据 何根 | 更新日期: 2023-09-27 17:59:28

我有一个动态的XML结构。我的意思是,根名称可以更改,元素名称可以更改和xml的结构可以更改。那么,如何将动态xml反序列化为对象呢?

通过xml元素名称动态创建类,这可能吗?如果是,那么我该怎么做呢?

如何从xml反序列化数据,以及如何根据xml元素名称动态创建类

那么,我如何将这种类型的xml反序列化为对象呢?

好吧,如果没有特定的XSD架构,就无法将XML反序列化为静态类型的类。您可以使用XDocument或XmlReader类来解析和提取其中的信息。

如果您使用的是.Net 4,那么您可能需要ExpandoObject:

表示一个对象,该对象的成员可以在运行时动态添加和删除。

您想要查看工厂模式。基本思想是:

for each XML node, get the type name / name of node
  ask factory for type with given name
  create object of the given type
  pass the XML node to object to allow it to load its data

XSD模式在这里有助于验证XML在结构上是正确的,尽管不是必需的。我确实尝试过一次,从XML创建对象,但我从未找到为一个XML拥有多个模式文件的方法(如果你明白我的意思,这将允许我在不更改根模式的情况下扩展模式)。