【问题标题】:XOM v/s javax.xml.parsersXOM 与 javax.xml.parsers
【发布时间】:2009-06-16 13:11:37
【问题描述】:

我想阅读简单的 XML 文件。我发现 Simple way to do Xml in Java

还有几个可用的解析器只是想确定使用 XOM 解析器比 suns 解析器有什么优势

有什么建议吗?

【问题讨论】:

    标签: java xml xom


    【解决方案1】:

    XOM 与标准的 W3C DOM 相比非常快。如果这是您的首要任务,那就没有比这更好的了。

    但是,它仍然是一个 DOM 类型的 API,因此内存效率不高。它不能替代 SAX 或 STAX。

    【讨论】:

      【解决方案2】:

      您可能想查看此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 它可以很好地流式传输。

      【讨论】:

      • 我看到您的问题stackoverflow.com/questions/967288/… 已被接受。 XOM 仍然是流式传输的缺点吗?
      • 嗯,是的,因为 XOM API 不直接支持它。 (但解决方法非常简单,正如答案所示。)无论如何,继续尝试 XOM 是否适合您!我现在要使用的另一个 Java XML 库是 Simple Framework
      • 我最终使用 XOM 和来自答案的流,多亏了你。我能够毫无问题地使用 10000 个节点流式传输 XML。我之所以问,是因为上面的声明说 XOM doesn't really support streaming,而实际上 XOM 只是默认情况下不提供它,我发现这具有误导性。我想你应该在上面的答案中改变它。感谢 Simple Framework 的推荐,将在我的下一个项目中尝试。
      • @Sundeep:很公平,我调整了措辞。很高兴听到 XOM 为您完成了这项工作。干杯。 :)
      【解决方案3】:

      您需要如何访问您的数据?

      如果是一次性的,那么你不需要在内存中构建树。您可以使用SAX(快速,简单)或StAX(更快,不是那么简单)。

      如果您需要将树保存在内存中进行导航,XOMJDOM 是不错的选择。 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。

      【讨论】:

      • 奇怪的是你说 SAX 比 StAX 更简单。 SAX 可能是一个更简单的 API,但编写基于 StAX 的代码比编写 SAX 容易得多。
      猜你喜欢
      • 2013-06-17
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多