【问题标题】:How to debug org.xml.sax.SAXParseException; schema_reference.4?如何调试 org.xml.sax.SAXParseException; schema_reference.4?
【发布时间】:2013-02-05 03:42:35
【问题描述】:

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

【问题讨论】:

    标签: java xml validation schema


    【解决方案1】:

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

    这里有一个解释 encoding 的有效属性值在 XML 声明中 http://www.w3.org/TR/REC-xml/#NT-EncodingDecl

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

    【讨论】:

    • 替换所有问题,但仍然无法理解为什么一个小的 - _ 会导致 Oxygen 和 Netbeans 崩溃。 (现在他们没有)
    猜你喜欢
    • 2020-06-15
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2014-06-15
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多