将部分XML段反序列化为XSD.exe生成的类

时间:2011-01-21 16:12:31

标签: .net xml

我有许多XSD文件,用于定义某些XML的架构。我使用XSD.EXE工具生成了类,并将其添加到我的项目中。

架构本身有许多嵌套类型,可以很好地反序列化,直到我进入如下定义的段:

    <xs:element name="SamplePayload" type="xs:anyType"/>

这给我留下了原始的System.Xml.XmlNode。我知道这个部分应该反序列化的特定类型/类(它在XML本身中指定并且不是静态的 - 它可以是几种不同类型中的任何一种)。我希望我可以在XmlSerializer类中调用Deserialize,传入这个段,但当然它本身并不是真正有效的XML。

有没有一种简单的方法可以将这个片段加载到我的类中,而不必亲自手动解析这些东西(这个片段代表另一个相当复杂的XML集,因此非常痛苦)。

我无法控制XSD文件,因此我无法更改它们。

1 个答案:

答案 0 :(得分:0)

我能想到的最简单的方法是编写一个预处理器阶段,简单地用你想要的类型替换字符串xs:anyType的所有实例。

您还可以修改生成的类以便即时进行转换。