gpt4 book ai didi

c# - 验证 xml 到 xsd 以仅捕获特定错误

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

我有一个导入文件需要跳过并继续处理特定错误。我想忽略数据类型、最小/最大长度和必填字段的错误。我想捕获并显示有关格式不正确且位置错误的项目的错误。

在这种情况下,文件包含一组人。

我想捕捉的是错误:1:person 节点之外的 Children 节点。2:一个人节点之外的 child 。3:人员节点外的人员。

我想忽略错误:1: child 没有名字。2:人没有出生日期。

<xs:element name="People">
<xs:complexType>
<xs:sequence>
<xs:element name="Person" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="FirstName" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LastName" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BirthDate" type="Date" minOccurs="1" maxOccurs="1"/>
<xs:element name="Children">
<xs:complexType>
<xs:sequence>
<xs:element name="Child" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="FirstName" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BirthDate" type="Date" minOccurs="1" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>

最佳答案

按如下方式更改架构:

  • 在 Child 下的 Firstname 元素声明中,添加一个属性 type="xs:string"。此外,删除元素声明的所有内容(simpleType 等)。如果需要,您可以使标签自动关闭。
  • 在 Birthdate 元素声明中,将 minOccurs 从 1 更改为 0。

第一个更改删除了当前对 child 姓名的限制,即内容至少有一个字符长。添加 type 属性是必要的,因为您要删除元素类型的当前定义。

第二个更改告诉验证器不需要出生日期。

进行这些更改和您想要验证的 XML,应该。

关于c# - 验证 xml 到 xsd 以仅捕获特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258557/

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