我有一个关于 WCF 和 XML 反序列化的问题。
假设我有一个 XSD,它将许多属性指定为 minoccurs='0'。
<xs:element name=TestData>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs=0 name="stoppageHours>
<xs:simpleType>
<xs:restriction base="xs:int">
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs=0 name="stoppageDate>
<xs:simpleType>
<xs:restriction base="xs:dateTime">
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:sequence>
<xs:complexType>
</xs:element>
如果我没有属性的值,我可以省略 XML 中的元素标签,即
<TestData>
<StoppageHours>26</StoppageHours>
...omitted stoppageDate...
</TestData>
但是,鉴于我已经生成了从 XSD 到 .NET c# 的类,当我将 XML 发布到我的 Web 服务时,它抱怨反序列化失败,因为它期望元素?
如何强制反序列化过程忽略丢失的 XML 元素并将有问题的类成员设置为 NULL 值?我尝试将类成员设置为系统可为空的类型,但要使其正常工作,我必须将 XML 元素作为 xsi:nillable 传递?我真正想做的只是省略 XML 标记。
谢谢。