Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用什么样的pull解析器实现以及何时使用?_Java_Xml_Xmlpullparser - Fatal编程技术网

Java 使用什么样的pull解析器实现以及何时使用?

Java 使用什么样的pull解析器实现以及何时使用?,java,xml,xmlpullparser,Java,Xml,Xmlpullparser,我需要使用xml拉解析器。我可以找到stax-api.jar,它似乎已经是com.sun.xml的一部分。*而且似乎已经实现了一些与stax相关的东西 不幸的是,com.sun.xml在JDK 6中没有任何源代码,所以我不知道 还有,而且,它实现了staxapi。org似乎是一个stax参考实现。Xmlpull似乎是由与参考实现相同的人完成的,ApacheAxiom似乎是为ApacheAxis2创建的基于StAX的解析器 请您澄清一下主要的区别是什么,使用什么API,什么时候使用这些实现之一,为

我需要使用xml拉解析器。我可以找到stax-api.jar,它似乎已经是com.sun.xml的一部分。*而且似乎已经实现了一些与stax相关的东西

不幸的是,com.sun.xml在JDK 6中没有任何源代码,所以我不知道

还有,而且,它实现了staxapi。org似乎是一个stax参考实现。Xmlpull似乎是由与参考实现相同的人完成的,ApacheAxiom似乎是为ApacheAxis2创建的基于StAX的解析器

请您澄清一下主要的区别是什么,使用什么API,什么时候使用这些实现之一,为什么

编辑:在您决定结束这个问题之前,请注意xmlpull.org和stax.codehaus.org的发行版已经很老了(5年),我们真的无法确定stax解析器实现是否是sun.com.xml的一部分。*。 我只需要有pull解析器经验的人告诉我,使用什么以及为什么


例如,project(我也在解析atom提要)正在使用Axiom实现,该实现似乎正在实现其Axiom api以及geronimo-stax-api_1.0_spec

从Java 1.6开始,在普通绑定的JRE中有一个stax实现。你可以用这个。如果你不喜欢这场演出,请来伍德斯托克


Axiom完全是另一回事,要复杂得多。Xmlpull似乎偏向于一种或另一种Stax实现。

除了指出JDK/JRE捆绑了Sun的SJSXP(目前运行正常),我建议不要使用Stax ref impl(Stax.codehaus.org)——永远不要将其用于任何用途。它有很多剩余的bug(虽然很多已经修复,初始版本很糟糕),速度不是特别快,甚至没有实现所有必需的功能。别碰它

我偏爱木本,这是迄今为止XML特征(与XeRes相媲美,关于其他唯一的java XML解析器,可以说这一点),比SjsXP更高性能,以及所有的实体解析器和生成器——这就是为什么大多数现代java XML Web服务框架和容器捆绑Woodstox。 或者,如果您想要超高性能,请查看。它是Woodstox的继任者,功能更少(无DTD处理),但在许多常见情况下速度快2倍。 如果您曾经需要非阻塞/异步解析(例如,对于基于NIO的输入),Aalto是唯一已知的提供该功能的JavaXML解析器

至于Axiom:它不是一个解析器,而是建立在Stax解析器之上的树模型,比如Woodstox,所以他们没有重新发明轮子。XmlPull比staxapi早几年;基本上,Stax标准化是指人们使用XmlPull,喜欢他们看到的东西,Sun+BEA希望标准化这种方法。在这个过程中有一些摩擦,所以最终在Stax最终定稿时XmlPull并没有停止,但人们可以认为Stax是后续产品——XmlPull仍然用于移动设备;我认为Android平台包括了它


(免责声明:我参与了Aalto和Woodstox项目;并为SJSXP和Stax RI提供了十多个bug修复)

2005年使用了XMLPull,速度非常快,规模非常小。这是当时最好的工具。暂时无法发言,因为它已经有一段时间没有更新了。ApacheAxiom似乎已经在XMLPull停止的地方取得了进展。您还可以看看WoodStox,“嘿,我不是问要使用哪种类型的解析器,而是问要使用哪种拉式解析器实现”。好的,从你问题的初稿来看这并不明显。标记xmlpullparser没有改变,标题“使用什么样的pull解析器实现”也没有改变。。。所以我觉得这很明显,但我想这也很容易错过,并误解了这个问题…谢谢,woodstox是我最好的选择,我错过了,因为它有org.codehaus.stax2 fqn,使用wstx快捷方式,而google没有对此做太多说明。顺便说一句,我真的没有看到JRE中的实现,如果我搜索实现STAXAPI的类,JRE中通常没有,有时在com.sun.xml.internal.fastinfoset.stax.*中也没有。。。但例如,MXParser是xmlpull.org以及stax.codehaus.org的一部分。。。只有codehaus实现实现了staxapi,尽管它在那里。你只要在工厂里打电话给newInstance就行了。是的,你打电话给createXMLStreamReader。谢谢StaxMan,顺便说一句,你的博客很棒。可读性强。我很高兴我订阅了它。谢谢你,很高兴你喜欢它!Aalto异步解析器的一些帮助器类: