使用stax2-api的问题

时间:2015-09-04 16:29:21

标签: java xml maven stax

我想知道是否有人熟悉stax-api,尤其是stax2-api。

我的申请表中有一种奇怪的行为。

我的应用程序A依赖于Java.xml.stream:stax-1.0-2

然而,只要我将org.codehaus.woodstox:stax2-api放入我的依赖项中,即使还没有使用它,应用程序也会切换到使用stax2-api。

Stax2-api如下所示:github:

  

Stax2 API是通过遵循Stax XML本机实现的   实现:

     

Woodstox Aalto此外,Stax2 API包含包装器实现   可用于支持常规Stax上的大多数API   像Sun SJSXP这样的实现(捆绑了默认的Stax实现)   使用JDK 1.6和1.7)。

API类位于org.codehaus.stax2包中。

Stax2 API also contains partial Reference Implementation of many of API classes, under org.codehaus.stax2.ri: intention is to make it as painless as possible for Java Stax parser to implement full Stax2 support.

<dependency>
  <groupId>org.codehaus.woodstox</groupId>
  <artifactId>stax2-api</artifactId>
  <version>3.1.2</version>
</dependency>

stax2的依赖关系如下:

    <dependencies>
            <!-- Since baseline with 4.0 is Java5, we still need to officially keep this in;
                 should drop once we go up to Java6 or 7
              -->
            <dependency>
              <groupId>javax.xml.stream</groupId>
              <artifactId>stax-api</artifactId>
              <version>1.0-2</version>
              <!-- at this point, with inclusion in JDK 1.6, this should be given -->
              <scope>provided</scope>
            </dependency>
  </dependencies>

应该注意的是,我的应用程序A在 Java.xml.stream:stax-1.0-2。

的原始依赖性方面效果很好。

知道为什么使用stax2而不是stax。

1 个答案:

答案 0 :(得分:1)

这个问题没有任何意义:stax2-api只是实现可能选择实现的API扩展。它没有任何其他权力;不会自动注册任何内容。

你可能会在classpath中包含任何Stax实现会导致添加SPI(META-INF / services /),这可能会改变加载的实际Stax实现,除非你指定了你想要的实现(比如当打电话给XMLInputFactory.newFactory())。 但这与Stax2 API jar无关。