在我的XSD中,我有类似的东西:
<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns:jump="testThingy" elementFormDefault="qualified" targetNamespace="testThingy" xmlns="http://www.w3.org/2001/XMLSchema">
<element name="command" type="jump:commandType" />
<complexType name="loginType">
<sequence>
<element name="userName" />
</sequence>
</complexType>
<complexType name="commandType">
<sequence>
<choice>
<element name="login" type="jump:loginType" />
<element name="logout" />
</choice>
<!-- There are other elements here but they are IRRELEVANT to the question -->
</sequence>
</complexType>
</schema>
因此,使用XSD到C#工具(xsd.exe或Xsd2Code),这会生成2个类(commandType和loginType)。但是,如果我想要提交注销命令,那么XML需要如下所示:
<command>
<logout />
</command>
但是,我没有 - 无论等同于 - logoutType。在生成的类中,如果我想使用logout,那么commandType需要一个“XmlElement”。
假设XSD到C#工具不能为我生成这个类,你如何编写一个基本上只是序列化为类的类,并且类型为XmlElement,因此它适合于commandType?
(注意:我无法控制XSD,否则我会将其更改为包含新的complexType)
答案 0 :(得分:0)
根据现在发布的架构,很清楚为什么XmlElement
为logout
。您认为logout
元素的类型是什么?它是xs:anyType
。它可能是任何东西。唯一与之匹配的.NET类型是XmlElement
,除非您更喜欢object
。
你想要什么而不是XmlElement
?