在java中解析XML的内存效率最高的方法是什么?

我对webapp的内存问题负责解析XML事件并将它们推送到我们的RabbitMQ总线。 这个webapp在servlet中接收XML事件,我们将其解码并将其推送到我们的总线,然后我们确认发送者。 我们正在使用java 5中的org.xml.sax.helpers.DefaultHandler ,但似乎Stax (带有XMLStreamReader)要好得多并且仍然易于阅读,但我们需要将代码迁移到java6(请参阅此问题)所以)。 值得吗?

在java中解析XML的内存效率最高的方法是什么? 我们正在寻找一种快速高效且易于编写/读取的代码。 这存在吗?

事件驱动的解析器不会构建AST,因此速度快,内存效率高。 XML的标准将由SAX标准定义。

Xerces实现声称速度很快。

NanoXML是一个非常小巧轻便的XML解析器,支持SAX解析。 它是Xerces的一个很好的替代品。

要注意提到萨克斯的答案,因为它的代价是效用显着降低。 在没有牺牲可用性的情况下,最节省内存的sax解析是vtd-xml 。 这是certificate

使用Java处理XML – 性能基准http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf