我有webapp的内存问题,解决XML事件并将它们推送到RabbitMQ总线。这个webapp在servlet中接收XML事件,我们将其解码并将其推送到我们的总线,然后我们确认发送者。我们在java 5中使用org.xml.sax.helpers.DefaultHandler
,但似乎Stax(使用XMLStreamReader)更好并且仍然易于阅读,但我们需要将代码迁移到java6(参见{{3在SO)。值得吗?
在java中解析XML的内存效率最高的方法是什么?我们正在寻找快速,内存效率以及易于编写/读取代码。这是否存在?
答案 0 :(得分:3)
事件驱动的解析器不会构建AST,因此速度快,内存效率高。 XML的标准将由SAX standard定义。
答案 1 :(得分:1)
NanoXML是一个非常小巧轻便的XML解析器,支持SAX解析。它是Xerces的一个很好的替代品。
答案 2 :(得分:0)
要注意提到萨克斯的答案,因为它的代价是效用显着降低。在没有牺牲可用性的情况下,最节省内存的sax解析是vtd-xml。这是证据
使用Java处理XML - 性能基准http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf