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

标签 java xml validation xsd

我想验证 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/

相关文章:

android - 为 ExpandableListView 设置自定义指示器不起作用

validation - cloudform 验证无法在 Windows 上本地运行

java - 如何在另一个方法中使用 boolean 值的返回语句?

java - 使用已处置的观察者不会重新订阅源

java - 列表碰撞检测的最快方法?

用于切片列表的Java算法

xml - 如何检查 XSLT 错误

Go 中的 XML HTTP 发布

javascript - 如何在客户端验证 Symfony 2 表单(javascript)

c# - 用于验证字母数字字符串长度的正则表达式