gpt4 book ai didi

java - 如何使用命名空间针对 xsd 验证 xml 文件

转载 作者:行者123 更新时间:2023-12-01 12:39:21 24 4
gpt4 key购买 nike

我想验证 xml 文件包含 xsd 文件的命名空间。

我的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfNumberOfCars xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars">
<NumberOfCars>
<Number>417</Number>
</NumberOfCars>
</ArrayOfNumberOfCars>

我的 xsd 文件:

    <xsd:element name="ArrayOfNumberOfCars">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" ref="NumberOfCars" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="NumberOfCars">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" ref="Number" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="Number">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="15" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

调用方法验证后,出现以下异常:

org.xml.sax.SAXException: javax.xml.stream.XMLStreamException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 86; cvc-elt.1: Cannot find the declaration of element 'ArrayOfNumberOfCars'.

每个人都知道如何配置 xsd 文件中名称页的验证。请帮助我。

谢谢

最佳答案

您尚未显示架构的关键部分,其中定义了 targetNamespace。

如果架构中的 targetNamespace 与您的实例文档中的 targetNamespace 匹配,那么您应该没有问题,并且不需要执行任何特殊操作。

如果它们不匹配,则您的实例文档无效,使其有效的唯一方法是将其转换为正确命名空间中的不同文档(或无命名空间,如果这是架构定义的) .

关于java - 如何使用命名空间针对 xsd 验证 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262724/

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