java - 来自 java 的 libxml2

标签 java xml dom libxml2 xerces

这个问题有点相关 Fastest XML parser for small, simple documents in Java 但有更多细节。

我正在开发一个需要解析许多(数千万)、小型(约 300k)xml 文档的应用程序。当前的实现使用 xerces-j,在 1.5 GHz 的机器上每个 xml 文档大约需要 2.5 毫秒。我想提高这种表现。我看到了这篇文章

http://www.xml.com/pub/a/2007/05/16/xml-parser-benchmarks-part-2.html

声称 libxml2 的解析速度比任何 Java 解析器快一个数量级。我不确定我是否相信,但它引起了我的注意。 有没有人尝试过使用 jvm 中的 libxml2?如果是这样,它是否比 java dom 解析 (xerces) 更快? 我想我仍然需要我的 java dom 结构,但我猜从 c 结构的 dom 复制到 java-dom 应该需要很长时间。我必须有 java-dom - 在这种情况下 sax 帮不了我。

更新:我刚刚为 libxml2 编写了一个测试,它并不比 xerces 快...当然我的 c 编码能力非常生疏。

更新 我在这里扩大了问题的范围: why is sax parsing faster than dom parsing ? and how does stax work? 并且愿意接受放弃 dom 的可能性。

谢谢

最佳答案

在 Java 中,StAX JSR-173通常被认为是解析 XML 的最快方法。 StAX 有多种实现,Woodstox实现通常被认为是快速的。

为了提高性能,我会避免使用 DOM。你在用 XML 做什么?如果您最终将其作为对象处理,则应考虑 OXM 解决方案。标准是 JAXB JSR-222 . JAXB 实现,例如 MOXy (我是技术负责人)甚至允许您进行部分映射以提高性能:

关于java - 来自 java 的 libxml2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3701265/

相关文章:

javascript - 在 for 循环中添加事件监听器

java - 升级 Jersey 版本后随机 REST API 调用失败

java - 无法对数组元素求和?

java - 如何修复这个函数总是返回 false

xml - XSL - 恒等变换 - 改变元素的值

java - 让用户点击的地方出现一个按钮

python 使用命名空间处理 xml 字符串

javascript - 获取元素相对于 grand-...-grand--parent 的偏移量

java - 将 Count.ly 集成到 Android 应用程序

javascript - 通过 DOM 递归搜索以剔除innerText