gpt4 book ai didi

java - 空标签的 XML 验证

转载 作者:行者123 更新时间:2023-12-01 19:13:30 25 4
gpt4 key购买 nike

我有元素日期类型的 xml 文件:

...
<startDate />
...

在 xsd 文件中描述了这种类型:

<xs:element name="startDate " type="xs:date" nillable="true" />

当我使用 SchemaValidator 验证 xml 时,出现异常

org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '' является недопустимым значением для '日期'。

当标签startDate不为空时一切正常。但是当它为空时就会发生异常。我只能更改 xsd-schema 文件,而不能更改 xml,因为我从另一个系统接收它。

最佳答案

由于您无法更改 XML 文档,因此您可以尝试使用空字符串构建 xs:date 的联合类型:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="empty-string">
<xs:restriction base="xs:string">
<xs:maxLength value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="startDate">
<xs:simpleType>
<xs:union memberTypes="xs:date empty-string"/>
</xs:simpleType>
</xs:element>
</xs:schema>

反对

<startDate/>

应该验证。

注意:如果您可以更改 XML 文档,这可能会根据您的原始架构成功验证(因为 nillable 属性):

<startDate
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:nil="true"/>

关于java - 空标签的 XML 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636822/

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