Java XSD验证:此解析器不支持规范";空";版本;空";
我试图使用标准Java库验证XML文件,并得到上述错误。我的XSD文件Java XSD验证:此解析器不支持规范";空";版本;空";,java,xsd,Java,Xsd,我试图使用标准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
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>
错误是:
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中没有明确的Xerce。是否有一个简单的解决方法(我不介意使用什么解析器,只要它能够验证)。我认为您的XSD文件无法通过
InputStream SCHEMA\u STREAM=getClass().getResourceAsStream(SCHEMA\u PATH)访问代码>。容易接近
我验证您的代码和XSD
文件,只更改了以下行。它在jdk1.6
和jdk1.7
中运行时没有任何问题
InputStream SCHEMA_STREAM = new FileInputStream(new File(SCHEMA_PATH));
当文件不可访问时,我得到的NullPointerException
有点不同,如下所示:
Exception in thread "main" org.xml.sax.SAXParseException:
schema_reference.4: Failed to read schema document 'null'
你在xsd中试过这个吗
对于属性,请使用属性use=“optional”
对于元素,使用属性nillable=“true”
或使用属性minOccurs=“0”
我追踪到Xerces的不兼容版本,包括其他软件。强制使用Xerces的更高版本可以解决此问题。感谢您的建议,但我的实例中正在读取XSD文件(如果我将其编辑为不兼容,它将失败)
Exception in thread "main" org.xml.sax.SAXParseException:
schema_reference.4: Failed to read schema document 'null'