XML解析器有时无法解析Android上的大型XML文件
问题描述:
我正在解析我的应用程序中的大型XML文件(〜1-2M)。解析某些文件时,偶尔解析器会失败 。XML解析器有时无法解析Android上的大型XML文件
症状:
- 有时同一个文件被成功解析,有时 - 不。
- 如果解析文件失败,则需要一段时间才能再次成功解析文件 。
- 我使用两种类型的XML解析器:SAX(的XMLReader)和Pull(XMLPullParser), 两者均没有接近文件在同一个地方。
- 我使用FileInputStream作为解析器的输入源。
- 同一文件通过ZIP压缩,然后通过ZipFile.getInputStream 打开(几乎)总是成功解析。
- 我尝试用BufferedInputStream封装FileInputStream - 没有任何改变。
- 如果解析失败,则解析文件的下一次尝试在文件中的相同位置失败。
我认为可以有两个原因:
- 的FileInputStream工作不正确。
- XML解析器使用的FileInputStream的工作不正确(我听说这两个解析器 Android中相同的基础上实现)。
请帮忙解决问题或建议一种解决方法。
谢谢。
答
如果您仅在有时遇到问题,则是这种情况。如果每次运行应用程序时都会出现问题,则问题可能出在XML上。
在我来说,我认为这是设备(我有三星I5700)或SD卡的问题,因为没有我的应用程序的用户的报告同样的问题。
我打算用android重新格式化SD卡或尝试购买另一个。
它以哪种方式失败?任何错误日志(即超时)? – 2010-11-19 06:32:10
它是解析器与行的异常:发生XML解析错误的列。 – 2010-11-19 08:06:09
检查你的代码的内存使用情况,你可能会达到16M的堆大小。这会返回内存不堆:Runtime.getRuntime()。totalMemory(); Runtime.getRuntime()。maxMemory(); Runtime.getRuntime()。freeMemory(); – Pentium10 2010-11-19 10:12:17