【发布时间】:2012-12-19 15:14:35
【问题描述】:
我的应用程序从服务器接收一些 XML 格式的数据。我使用XmlPullParser 解析它。一切正常。直到服务器发送大型嵌套对象 - BASE64 编码的位图或文件(最多 10+Mb)。在具有少量 VM 堆(例如 2.3)的旧设备上,应用程序在 String text = parser.getText(); 上崩溃(内存不足)
在这种情况下我该怎么办?
有什么方法可以获取流吗?或者mabeyXmlPullParser可以分拆给我吗?
【问题讨论】:
-
我遇到了同样的问题(实际上即使在 4.0 上它仍然无法正常工作)。不幸的是,除了编写自己的 XML 解析器将这个字符串拆分成各种字符串并尝试对其进行操作之外,我没有找到任何解决方案。
-
我建议使用多部分服务器响应(仅 xml 中的引用,以及二进制对象作为其他部分)。这样,您可以避免批量或解析 10M xml 和 10M B64
-
很遗憾,我们无法修改服务器端。我看到了两种方法: 1 切换到 sax 解析器,如下所示; 2 修改KXmlParser,因为它的license没有限制,或者写一个新的
标签: android xml-parsing xmlpullparser