答案 0 :(得分:6)
与标准W3C DOM相比,XOM 非常快。如果这是你的首要任务,那就更好了。
但是,它仍然是DOM类型的API,因此它不具有内存效率。它不是SAX或STAX的替代品。
答案 1 :(得分:4)
您可能想要查看此question about the best XML library及其顶部(XOM)答案;关于XOM优点的大量细节。 (如果事情不清楚,请发表评论;PeterŠtibraný似乎从内到外都知道XOM。)
如前所述,与标准javax.xml相比,XOM在大多数任务中都非常快速和简单。有关示例,请参阅有关使用Java读取XML文件的最简单方法的问题中的this post。我收集了一些很好的例子,使得XOM看起来非常好(而且javax.xml相当笨拙)。 : - )
所以我个人在评估之后就开始喜欢XOM了(正如你在链接的帖子中看到的那样);对于任何新的Java项目,我最有可能选择XOM进行XML处理。我发现的唯一缺点就是它doesn't directly support streaming XML(与我来自的dom4j不同),但是a simple workaround它可以很好地传输。
答案 2 :(得分:1)
您如何访问数据?
如果是一次通过,那么您不需要在内存中构建树。您可以使用SAX(快速,简单)或StAX(更快,不那么简单)。
如果您需要将树保留在内存中以进行导航,XOM或JDOM是不错的选择。 DOM是最后选择,无论是1级,2级还是3级,有或没有扩展名。
Xerces,它是Java附带的解析器(尽管你应该从Apache获得更新版本而不使用与Java捆绑的版本,即使在6.0中),也有一个名为XNI的流本地接口。 / p>
如果你想在链中挂钩其他预制零件,通常SAX或StAX工作得很好,因为他们可能会在内存中构建自己的模型。例如,Saxon XSLT / XQuery引擎可以与DOM,SAX或StAX一起使用,但在内部构建TinyTree(默认)或DOM(可选)。 DataDirect XQuery也适用于SAX,StAX或DOM,但真的喜欢StAX。