如何调试org.xml.sax.SAXParseException; schema_reference.4?

时间:2013-02-20 07:51:16

标签: java xml validation schema

(不是它可能没有关系,但今天我刚刚得到了引起:java.io.UnsupportedEncodingException: UTF_8和Oxygen XML编辑器一样)

错误是:

SEVERE: null    
org.xml.sax.SAXParseException; schema_reference.4: Failed to read schema document 'file:/fileLocation', because 1) 
could not find the document; 2) the document could not be read; 3) the root element
of the document is not <xsd:schema>.

来自第三行代码:

File schemaFile = new File("filenName.xsd");
            SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            Schema schema = schemaFactory.newSchema(schemaFile);

我做的第一件事就是复制路径并测试它以确保它指向正确的文件。我做到了。

其次是检查java是否能够读取该文件,并使用.canRead()进行检查;

第三,我在架构内检查根节点。

<?xml version="1.0" encoding="UTF_8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    targetNamespace="name" xmlns="name">
     ...
</xsd:schema>

它曾经是 xs:schema ,但我切换它是因为我收到了这个错误。最奇怪的是,当我编码时,我没有得到任何错误(1周前)。

1 个答案:

答案 0 :(得分:4)

当然UTF_8不正确,应该是UTF-8

此处有http://www.w3.org/TR/REC-xml/#NT-EncodingDecl

对XML声明中有效encoding属性值的解释

实际上,Java XML解析器支持Java支持的任何encoding,并且还允许别名,例如UTF8也不错,但不是UTF_8。