Java 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

我试图使用标准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>
错误是:

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'