Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net XML验证需要一个可选元素_.net_Xml_Validation - Fatal编程技术网

.net XML验证需要一个可选元素

.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"/> <

我有一个使用WCF的.NET客户端。为了进行验证,我使用了一个xsd,如:

<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模式验证在何处消亡以及为何消亡的信息吗?