gpt4 book ai didi

c# - 序列复杂类型中缺少必需元素时的 XSD 验证错误

转载 作者:数据小太阳 更新时间:2023-10-29 02:39:21 25 4
gpt4 key购买 nike

我有一个 XSD 和不正确的 XML。

XSD 具有复杂的类型,其中包含元素的序列。所有这些元素都是强制性。 (XSD 由第 3 方维护,不能更改)

不正确的 XML 缺少一个元素。

当我使用 C# 针对 XSD 验证 XML 时,预期的错误是“需要‘XXX’元素”。但实际上,它还告诉我“该元素具有无效的子元素”。我不确定我应该怎么做。

为了帮助您理解我的问题,我将向您展示一个示例:

<!-- Incorrect XML -->
<class>
<el1>222</el1>
<el3>222</el3>
</class>

<!-- XSD -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:short" name="el1" />
<xs:element type="xs:short" name="el2" />
<xs:element type="xs:short" name="el3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

真实但意外的验证错误如下所示:

The element 'class' has invalid child element 'el3'. List of possible elements expected: 'el2'.

预期的错误是:

List of possible elements expected: 'el2'.

最佳答案

您误解了消息。 不是el3 永远不可能是 class 的 child 。意思是 el3 在解析过程中遇到它的时候是无效的。

换句话说,如前所述,

The element 'class' has invalid child element 'el3'.

是正确的。

另一方面,您解释信息的方式,

The element 'class' can never have child element 'el3'.

确实是不正确的。但是,由于它实际上并没有这么说,所以诊断消息没有问题。

关于c# - 序列复杂类型中缺少必需元素时的 XSD 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com