【问题标题】:Override Xerces implementation to create a XMLEventReader through XMLInputFactory通过 XMLInputFactory 覆盖 Xerces 实现以创建 XMLEventReader
【发布时间】:2013-06-06 07:29:22
【问题描述】:

Java 附带的 Xerces 版本有一个 bug when dealing with empty XML elements for XML version 1.1 input。 Apache 的 Xerces 版本(从 2.6.2 开始)中早就修复了这个错误。

我想通过 XMLInputFactory 接口创建一个 XMLEventReader。像这样的:

XMLInputFactory.newFactory().createXMLEventReader(new FileInputStream(inputFile));

简单地将 Xerces jar 放入类路径似乎在这里不起作用。事实上,我没有看到 Apaches Xerces 版本扩展了 XMLInputFactory,这似乎是创建特定于实现的输入工厂的先决条件。

有没有办法强制 XMLInputFactory.newFactory 使用类路径中的 Apaches Xerces 版本?

【问题讨论】:

  • This 可能会有所帮助。您需要设置一个系统属性来告诉工厂要实例化哪个类。
  • 不幸的是,Xerces 似乎没有 XMLInputFactory 的实现。至少我找不到。
  • 有这方面的消息吗?我在 Java 10 中有非常相似的问题。

标签: java xml xerces stax


【解决方案1】:

试试

    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.11.0</version>
    </dependency>

这个版本包括 StAX,它会自动覆盖默认的 StAX impl,使用 jar Service Provider mechanizm

【讨论】:

  • 很遗憾我们的项目没有使用 Maven。通过设置类路径来设置所有库。
  • 没关系,只需从这里下载 xerces 2.11.0 jar xerces.apache.org/mirrors.cgi
  • 它似乎不起作用。我尝试了问题 linked in my question 中的示例代码,其中只有您对 Xerces 2.11 的 Maven 依赖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多