这是 XML 架构:
<?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);
但我没有遇到任何异常(exception)。怎么了?
最佳答案
我发现您正在使用自定义ProductsSaxHandler
。
您没有为其提供代码,但当调用 ErrorHandler
接口(interface)的通知方法之一时,它很可能不会引发异常。
确保覆盖 ProductSaxHandler
的 error
、fatalError
和 warning
方法以引发异常。
关于java - 当使用架构验证无效 XML 时,为什么我没有得到异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216681/