【问题标题】:Error while trying to validate XML in Java尝试在 Java 中验证 XML 时出错
【发布时间】:2010-07-27 21:43:21
【问题描述】:

我正在尝试验证我使用本地架构创建的一个 xml,但抛出了一些异常错误。我的代码:

SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

factory.setSchema(schemaFactory.newSchema(
   new Source[] {new StreamSource("\\.\\schema\\xsd_me_ene_diaria.xsd")}));

我的堆栈跟踪如下。

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"
at javax.xml.parsers.SAXParserFactory.setSchema(Unknown Source)
at SaxValidacao.validateSchema(SaxValidacao.java:36)

在调用 setSchema 后立即引发错误。

Java 中 XML 验证的一些线索或其他技巧?

【问题讨论】:

    标签: java xml validation xsd


    【解决方案1】:

    有时会发生的一件事是混合不同版本的解析器。如果您使用 java 5 或更高版本,请尝试删除对任何外部 xalan 或 xerces 库的引用。 (处理xml所需的一切都包含在java 5的标准发行版中)

    【讨论】:

    • 没错!我引用了一个不正确的库。在你意识到这一点之后!
    【解决方案2】:

    我在一篇 CodeWall 文章中找到了解决方案,将一行 Java 代码添加到您的代码库中。

    System.setProperty("javax.xml.parsers.SAXParserFactory","com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
    

    更多详情请参考:https://coderwall.com/p/kqsrrw/jdom2-this-parser-does-not-support-specification-null-version-null

    【讨论】:

      【解决方案3】:

      你能关闭验证并解析流吗?如果是,则不太可能是 JAR 冲突。

      我认为您的问题是访问架构。

      【讨论】:

        【解决方案4】:

        一个可能的问题是您的 JAXP 解析器非常旧并且不支持 setSchema 方法。查看 SAXParsesrFactory 的 javadoc。对于 setSchema(和许多其他方法),它说:

        投掷:

        java.lang.UnsupportedOperationException - 为了向后兼容,当实现早期版本时 使用 JAXP 时,此异常将 被扔掉。

        检查您正在使用的解析器实现并尝试更新到较新的版本。

        【讨论】:

          猜你喜欢
          • 2017-12-26
          • 2016-01-04
          • 1970-01-01
          • 1970-01-01
          • 2017-10-31
          • 2020-01-13
          • 2023-04-06
          • 2015-12-19
          • 1970-01-01
          相关资源
          最近更新 更多