Java 如何使用名称空间根据xsd验证xml文件

Java 如何使用名称空间根据xsd验证xml文件,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我想用xsd文件验证包含名称空间的xml文件 我的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

我想用xsd文件验证包含名称空间的xml文件

我的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文件中为名称页配置验证。请帮帮我


谢谢

您没有显示模式的关键部分,其中定义了targetNamespace

如果模式中的targetNamespace与实例文档中的targetNamespace匹配,那么应该没有问题,并且不需要做任何特殊的操作


如果它们不匹配,则您的实例文档无效,使其有效的唯一方法是将其转换为正确名称空间中的不同文档(或者如果模式定义了名称空间,则不转换为名称空间)。

您没有显示模式的关键部分,其中定义了targetNamespace

如果模式中的targetNamespace与实例文档中的targetNamespace匹配,那么应该没有问题,并且不需要做任何特殊的操作


如果它们不匹配,则您的实例文档无效,使其有效的唯一方法是将其转换为正确名称空间中的不同文档(或者如果模式定义了名称空间,则不转换为名称空间)。

您没有显示模式的关键部分,其中定义了targetNamespace

如果模式中的targetNamespace与实例文档中的targetNamespace匹配,那么应该没有问题,并且不需要做任何特殊的操作


如果它们不匹配,则您的实例文档无效,使其有效的唯一方法是将其转换为正确名称空间中的不同文档(或者如果模式定义了名称空间,则不转换为名称空间)。

您没有显示模式的关键部分,其中定义了targetNamespace

如果模式中的targetNamespace与实例文档中的targetNamespace匹配,那么应该没有问题,并且不需要做任何特殊的操作


如果它们不匹配,则您的实例文档无效,使其有效的唯一方法是将其转换为正确名称空间中的不同文档(或者不转换为名称空间,如果模式定义了名称空间)。

正确的xsd是这样的

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema elementFormDefault="qualified"
    targetNamespace="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:prefix="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

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

    <xsd:element name="NumberOfCars">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element minOccurs="1" maxOccurs="1" ref="prefix: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>

</xsd:schema>


通过这种方式,xsd验证工作

正确的xsd是这样的

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema elementFormDefault="qualified"
    targetNamespace="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:prefix="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

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

    <xsd:element name="NumberOfCars">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element minOccurs="1" maxOccurs="1" ref="prefix: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>

</xsd:schema>


通过这种方式,xsd验证工作

正确的xsd是这样的

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema elementFormDefault="qualified"
    targetNamespace="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:prefix="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

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

    <xsd:element name="NumberOfCars">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element minOccurs="1" maxOccurs="1" ref="prefix: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>

</xsd:schema>


通过这种方式,xsd验证工作

正确的xsd是这样的

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema elementFormDefault="qualified"
    targetNamespace="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:prefix="http://schemas.datacontract.org/2004/07/Api.CarWEB.Services.Cars"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

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

    <xsd:element name="NumberOfCars">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element minOccurs="1" maxOccurs="1" ref="prefix: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>

</xsd:schema>


通过这种方式,xsd验证工作

还有一点:错误消息引用的元素“ArrayOfCar”既不出现在实例文档中,也不出现在模式中。可能这只是准备问题时的一个输入错误?还有一点:错误消息引用了一个元素“ArrayOfCar”,它既没有出现在实例文档中,也没有出现在模式中。可能这只是准备问题时的一个输入错误?还有一点:错误消息引用了一个元素“ArrayOfCar”,它既没有出现在实例文档中,也没有出现在模式中。可能这只是准备问题时的一个输入错误?还有一点:错误消息引用了一个元素“ArrayOfCar”,它既没有出现在实例文档中,也没有出现在模式中。想必这只是你准备问题时的一个输入错误?