这是XML Schema:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="products">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="product" type="ProductType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="ProductType">
<xs:sequence>
<xs:element name="id" type="xs:long" />
<xs:element name="name" type="xs:string" />
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:schema>
验证符合性的XML文件:
<?xml version="1.0" ?>
<products>
<product>
<invalid_tag>32342</invalid_tag>
<name>Some name</name>
<price>3.89</price>
</product>
</products>
使用XML并且应该测试一致性的Java代码:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
factory.setSchema(schemaFactory.newSchema(new File(xmlSchema)));
parser = factory.newSAXParser();
ProductsSaxHandler handler = new ProductsSaxHandler();
parser.parse(new File(xmlFile), handler);
但我没有任何例外。有什么问题?
答案 0 :(得分:3)
我发现您使用的是自定义ProductsSaxHandler
。
您没有为它提供代码,但很可能在调用ErrorHandler
接口的通知方法之一时不会抛出异常。
确保覆盖error
的{{1}},fatalError
和warning
方法以引发异常。