.net XML验证需要一个可选元素
我有一个使用WCF的.NET客户端。为了进行验证,我使用了一个xsd,如:.net XML验证需要一个可选元素,.net,xml,validation,.net,Xml,Validation,我有一个使用WCF的.NET客户端。为了进行验证,我使用了一个xsd,如: <xs:complexType name="MyBaseType"> <xs:sequence> <xs:element name="Family" type="FamilyType"/> <xs:element name="Relatives" type="RelativesType" minOccurs="0"/> <
<xs:complexType name="MyBaseType">
<xs:sequence>
<xs:element name="Family" type="FamilyType"/>
<xs:element name="Relatives" type="RelativesType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
当我尝试发送仅包含“Family”但不包含“Relatives”元素的XML实例时,验证结果如下:
(译文)
命名空间“…”中元素“myBase”的内容不完整。
应为命名空间中的可能元素列表:“家族,亲属”
“…”
(原件):
名称空间“…”中的元素“myBase”是
未经批准,Erwarett wurde die Liste der möglichen Elemente:
命名空间“…”中的“家庭,亲属”
但是根据模式,“Relatives”元素是可选的(不需要存在),因为它是用minOccurs=“0”
指定的
参考资料中有什么我遗漏的吗除了一些System.Xml.Serialization.XmlRootAttribute之外,我还必须添加到自动生成的代码中
使用的工具:svcutil,4.0.30319.1作为一个实验,如果将
族
(序列中的第一个)元素minOccurs=“0”
,会发生什么?或者,如果在序列的末尾放置一个“虚拟”元素,会怎么样?我不确定这会有什么特别的帮助,但也许它可以帮助你了解到底是什么情况导致了这个问题,这反过来可能会帮助你通过谷歌搜索更具体的症状来研究这个问题。也可能有助于显示你在svcutil中使用的命令行开关。另外,值得尝试nillable=“true”对于亲戚来说,改变xsd是毫无疑问的。这是既定的事实正如你可能猜到的,我只提取了一个示例部分。我已经尝试了“IsNullable=true”的方法。=>没有效果。我在VS2017、.NET 4.6.1上也有同样的问题(相同的错误消息),尽管我使用了自己的XMLSchemaValidator。有人知道Xerces验证工具(如svcutil)来获取更多关于.net xml模式验证在何处消亡以及为何消亡的信息吗?