我想验证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>
Affer call方法验证,我得到了例外:
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文件中为namespage配置验证。请帮帮我。
由于
答案 0 :(得分:1)
您还没有展示架构的关键部分,其中定义了targetNamespace。
如果架构中的targetNamespace与实例文档中的targetNamespace匹配,那么您应该没有问题,并且您不需要做任何特别的事情。
如果它们不匹配,那么您的实例文档无效,并且使其有效的唯一方法是将其转换为正确名称空间中的不同文档(或者没有名称空间,如果这样做的话。 s架构定义的内容。
答案 1 :(得分:0)
正确的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验证工作