目前我正在实现一个REST客户端,它将解析
XML响应消息.稍后,它将在
Android设备上运行.因此,存储器和处理速度是一个很大的问题.但是,一次只有一个XML响应,因此一次处理或保存多个XML文档不是问题.
据我所知,有三种方法可以使用Android SDK解析XML:
> SAX
> XmlPullParser
> DOM
阅读这些不同的解析方法,我得到了SAX建议用于大型XML文件,因为它不会像DOM那样在内存中保存完整的树.
但是,我问自己在千字节,兆字节,……等方面有多大?是否有实用的尺寸,使用SAX或DOM无关紧要?
谢谢,
罗伯特
解决方法
没有为XML文档或DOM大小设置标准限制,因此它完全取决于主机可以处理的内容.
当您在Android上实现时,您应该假设内存非常有限,并且记住DOM,XML解析器,程序逻辑,显示逻辑,JVM和Android本身都必须适合可用内存!
根据经验,您可以预期DOM占用的内存大约是源XML文档大小的四倍.假设512MB的可用内存,目标只占用DOM的一半,最终得到512/8或实际最大64MB的XML文档.
为了安全起见,我将再次减半到最大32MB.因此,如果您期望这么大的文档,我会转向SAX解析!
如果您希望应用程序在大型文档上以任何速度响应,那么SAX就是您的选择.一旦读取了第一个元素,SAX解析器就可以开始返回结果,DOM解析器需要在将任何输出发送到您的程序之前读取整个文档.