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

时间:2011-06-17 12:42:06

标签: c# xml serialization

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

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

3 个答案:

答案 0 :(得分:2)

  

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

好吧,您不能将没有特定XSD架构的XML反序列化为静态类型的类。您可以使用XDocumentXmlReader类来解析和提取信息。

答案 1 :(得分:1)

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

  

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

答案 2 :(得分:1)

您想查看factory pattern。基本思路是:

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创建多个模式文件的方法(如果你看到我的意思,这将允许我在不改变根模式的情况下扩展模式)。 / p>