【发布时间】:2015-06-28 04:02:44
【问题描述】:
我正在使用 xsd 验证 xml 文档。通过使用 sax 解析器,它成功验证。但是当我们使用 DOM 解析器时,它会给出错误 " 验证器类:com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl
org.xml.sax.SAXParseException; cvc-elt.1:找不到元素“图表”的声明。”
**XSD File**
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="xmlns:xsi" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="diagram">
<xs:complexType>
<xs:sequence>
----
----
----
**XML File**
<?xml version="1.0" encoding="UTF-8"?>
<diagram xmlns="xmlns:xsi">
<class name="Customer">
编辑:
简化的 XSD (schema1.xsd)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="xmlns:xsi" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="diagram">
<xs:complexType>
<xs:sequence>
<xs:element name="class" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
简化的 XML (xml1.xml):
<diagram xmlns="xmlns:xsi">
<class>classe</class>
</diagram>
重现的最少代码:
// load document
// Get Document Builder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// Build Document
Document doc = builder.parse(new File("./resources/xml1.xml"));
SchemaFactory aSF = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = aSF.newSchema(new File("schema1.xsd"));
Validator validator = schema.newValidator();
Source dsource = new DOMSource(doc);
validator.validate(dsource);
【问题讨论】:
-
向我们展示您如何调用验证。