2

(不是它可能不相关,但今天我刚刚得到了 Caused by: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 周前)。

4

1 回答 1

4

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

此处解释了 XML 声明中的有效encoding属性值http://www.w3.org/TR/REC-xml/#NT-EncodingDecl

在实践中,Java XML 解析器支持encodingJava 支持的任何内容,并且还允许使用别名,例如 UTF8 也很好,但 UTF_8 不支持。

于 2013-02-20T07:58:54.180 回答