【发布时间】:2009-06-16 13:11:37
【问题描述】:
【问题讨论】:
【问题讨论】:
XOM 与标准的 W3C DOM 相比非常快。如果这是您的首要任务,那就没有比这更好的了。
但是,它仍然是一个 DOM 类型的 API,因此内存效率不高。它不能替代 SAX 或 STAX。
【讨论】:
您可能想查看此question about the best XML library 及其顶部 (XOM) 答案;很多关于 XOM 优势的细节。 (如果有不清楚的地方,请发表评论;Peter Štibraný 似乎对 XOM 了如指掌。)
如前所述,与标准 javax.xml 相比,XOM 在大多数任务中都非常快速和简单。例如,请参阅this post 中有关在 Java 中读取 XML 文件的最简单方法的问题。我收集了一些很好的例子,这些例子让 XOM 看起来很不错(而 javax.xml 相当笨拙)。 :-)
所以我个人在评估后开始喜欢 XOM(您可以在链接的帖子中看到);对于任何新的 Java 项目,我很可能会选择 XOM 来处理 XML。我发现的唯一缺点是它 doesn't directly support streaming XML(与我来自的 dom4j 不同),但使用 a simple workaround 它可以很好地流式传输。
【讨论】:
XOM doesn't really support streaming,而实际上 XOM 只是默认情况下不提供它,我发现这具有误导性。我想你应该在上面的答案中改变它。感谢 Simple Framework 的推荐,将在我的下一个项目中尝试。
您需要如何访问您的数据?
如果是一次性的,那么你不需要在内存中构建树。您可以使用SAX(快速,简单)或StAX(更快,不是那么简单)。
如果您需要将树保存在内存中进行导航,XOM 或 JDOM 是不错的选择。 DOM 是不得已的选择,无论是 1 级、2 级还是 3 级,有或没有扩展。
Xerces 是 Java 包含的解析器(尽管您应该从 Apache 获取更新版本,而不是使用 Java 捆绑的版本,即使在 6.0 中也是如此),它还有一个名为 XNI 的流式原生接口。
如果您想将其他预制部件连接到链中,通常 SAX 或 StAX 效果很好,因为它们可能会在内存中构建自己的模型。例如,Saxon XSLT/XQuery 引擎与 DOM、SAX 或 StAX 一起工作,但在内部构建 TinyTree(默认)或 DOM(可选)。 DataDirect XQuery 也适用于 SAX、StAX 或 DOM,但真的喜欢 StAX。
【讨论】: