我正在尝试使用标准 Java 库验证 XML 文件并得到上述错误。我的 XSD 文件test1.xsd
是
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="foo">
<xsd:attribute name="bar" type="xsd:string" />
</xsd:complexType>
</xsd:schema>
使用代码(在 Eclipse 中作为 Junit 测试运行):
@Test
public void testValidatingParser1() throws Exception {
String SCHEMA_PATH = "test1.xsd";
InputStream SCHEMA_STREAM = getClass().getResourceAsStream(SCHEMA_PATH);
StreamSource SCHEMA_SOURCE = new StreamSource(SCHEMA_STREAM);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(SCHEMA_SOURCE);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setSchema(schema);
}
错误是:
java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"
at javax.xml.parsers.DocumentBuilderFactory.setSchema(Unknown Source)
at org.xmlcml.graphics.misc.SchemaTest.testValidatingParser1(SchemaTest.java:123)
此错误似乎是由于与 XML 解析器(例如 Xerces)不兼容造成的,请参阅这篇文章,但我没有框架(Eclipse 和 Junit 除外)。我的 POM 中没有明确的 xerces。是否有一个简单的解决方法(我不介意我使用什么解析器,只要它验证)。