【问题标题】:Error loading XML schema with Java使用 Java 加载 XML 模式时出错
【发布时间】:2015-03-27 23:08:46
【问题描述】:

我正在尝试使用 this schema 解析一个,但出现以下错误:

org.xml.sax.SAXParseException; systemId: http://www.khronos.org/files/collada_schema_1_4.xsd; lineNumber: 1; columnNumber: 50; White spaces are required between publicId and systemId.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
    ...

这是我的代码的相关部分:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

dbFactory.setValidating(true);

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaURL = new URL("http://www.khronos.org/files/collada_schema_1_4.xsd");
Schema schema = sf.newSchema(schemaURL); //Line causing error
dbFactory.setSchema(schema);

DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
Document doc = docBuilder.parse(file);

doc.getDocumentElement().normalize();

This question 表示所有xsi:schemaLocations 之间应该有空格,但它们之间已经有空格。一些 cmets 暗示这可能是 Eclipse 的问题,这绝对是一种可能性。

This question 说这是 doctype 声明的问题,但我不知道我的文档中可比较的代码部分在哪里。

【问题讨论】:

    标签: java xml xsd dtd


    【解决方案1】:

    当您试图从 URI 为 http://www.khronos.org/files/collada_schema_1_4.xsd 的文档中创建新架构对象时,会出现错误消息。

    错误消息所抱怨的数据似乎很有可能是从该 URI 检索到的数据。您是否尝试过取消引用 URI?你得到了什么?

    我得到的是一个 404 伴随着一个 HTML 错误页面,该页面开始:

    <!DOCTYPE html>
    

    这不是合法的 XML 文档类型声明,因此不可能是合法 XSD 模式文档的开始。错误消息不能很好地诊断问题(它表明输入确实具有公共标识符和系统标识符,但它们缺少分隔空格,而基本问题是两者都不存在),但修复与错误消息的详细信息无关。解决方法是为您要加载的架构文档找到正确的 URI:http://www.khronos.org/files/collada_schema_1_4 而不是 http://www.khronos.org/files/collada_schema_1_4.xsd

    【讨论】:

    • 我不确定它是否有效。我在docBuilder.parse(file) 上遇到了不同的解析错误。如果这无关紧要,我很乐意接受您的回答并创建另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 2012-06-17
    • 2016-08-04
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多