Java – XML解析器性能:Sun Java Streaming XML Parser(SJSXP)与Woodstox

我正在寻找最新的,内存效率和高性能的Java XML解析API。 我需要解析3 MB到5 MB的XML文件。

我对此进行了谷歌搜索并了解了Sun Java Streaming XML Parser(SJSXP),Woodstox比DOM和SAX快得多。 两者都使用StAX API。 *这些技术不支持架构validation。

Aalto XML处理器也实现了StAX API。

我没有找到关于这些技术的性能的具体发现。

哪一个在内存高效,高性能和易用性方面最佳?

以下是一些可能相关的链接:

  • Stax推动数据绑定: http ://technotes.blogs.sapo.pt/1708.html
  • 有效使用Woodstox: http : //www.cowtowncoder.com/blog/archives/2006/06/entry_2.html
  • 加速与Woodstox的XSLT: http : //www.cowtowncoder.com/blog/archives/2009/04/entry_235.html

至于表现:SJSXP是最慢的; 它只是一个重新打包的Xerces内部,包含在Stax API中。 这对性能有一些负面影响(因为它不是真正设计用于拉解析)。 Woodstox有点快; 对于小文档和写入来说,快得多,在解析较长的文档时差异较小。

阿尔托是三者中最快的,尤其是解析。 它通常比Woodstox或SJSXP快50%-100%。 一个缺点是它不处理DTD(因此不处理外部实体;它处理预定义和字符实体)。

免责声明:我是Woodstox和Aalto的作者; 以及SJSXP的贡献者(错误修复)