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

.net 将部分XML段反序列化为XSD.exe生成的类,.net,xml,.net,Xml,我有许多XSD文件,它们定义了一些XML的模式。我使用XSD.EXE工具生成了类,并将其添加到我的项目中 模式本身有许多嵌套类型,可以很好地进行反序列化,直到我得到这样定义的段: <xs:element name="SamplePayload" type="xs:anyType"/> 这就剩下了原始System.Xml.XmlNode。我知道这个部分的特定类型/类应该被反序列化,因为它是在XML本身中指定的,并且不是静态的——它可以是几种不同类型中的任何一种。我希望我可以在

我有许多XSD文件,它们定义了一些XML的模式。我使用XSD.EXE工具生成了类,并将其添加到我的项目中

模式本身有许多嵌套类型,可以很好地进行反序列化,直到我得到这样定义的段:

    <xs:element name="SamplePayload" type="xs:anyType"/>
这就剩下了原始System.Xml.XmlNode。我知道这个部分的特定类型/类应该被反序列化,因为它是在XML本身中指定的,并且不是静态的——它可以是几种不同类型中的任何一种。我希望我可以在XmlSerializer类中调用反序列化,传递这个片段,但它本身并不是真正有效的XML

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


我无法控制XSD文件,所以我不能仅仅更改它们。

我能想到的最简单的方法是编写一个预处理器阶段,它只需将字符串xs:anyType的所有实例替换为所需的类型


您还可以修改生成的类来进行动态转换。

我不确定如何使其自动轻松工作,因为我使用XSD生成需要反序列化的类。我需要按照您的建议修改XSD,运行XSD生成具有新已知类型的类,编译它们,然后继续我的代码。或者您可以使用XSD生成具有现有类型的类,然后修改处理xs:anytype的类。我最初没有指定此项,但类型可以更改,我知道这个类型是基于其他一些XML字段的。我修改了我的问题,使之更清楚一点。