2010-11-19 89 views
0

我正在解析我的应用程序中的大型XML文件(〜1-2M)。解析某些文件时,偶尔解析器会失败 。XML解析器有时无法解析Android上的大型XML文件

症状:

  1. 有时同一个文件被成功解析,有时 - 不。
  2. 如果解析文件失败,则需要一段时间才能再次成功解析文件 。
  3. 我使用两种类型的XML解析器:SAX(的XMLReader)和Pull(XMLPullParser), 两者均没有接近文件在同一个地方。
  4. 我使用FileInputStream作为解析器的输入源。
  5. 同一文件通过ZIP压缩,然后通过ZipFile.getInputStream 打开(几乎)总是成功解析。
  6. 我尝试用BufferedInputStream封装FileInputStream - 没有任何改变。
  7. 如果解析失败,则解析文件的下一次尝试在文件中的相同位置失败。

我认为可以有两个原因:

  1. 的FileInputStream工作不正确。
  2. XML解析器使用的FileInputStream的工作不正确(我听说这两个解析器 Android中相同的基础上实现)。

请帮忙解决问题或建议一种解决方法。

谢谢。

+0

它以哪种方式失败?任何错误日志(即超时)? – 2010-11-19 06:32:10

+0

它是解析器与行的异常:发生XML解析错误的列。 – 2010-11-19 08:06:09

+0

检查你的代码的内存使用情况,你可能会达到16M的堆大小。这会返回内存不堆:Runtime.getRuntime()。totalMemory(); Runtime.getRuntime()。maxMemory(); Runtime.getRuntime()。freeMemory(); – Pentium10 2010-11-19 10:12:17

回答

1

如果您仅在有时遇到问题,则是这种情况。如果每次运行应用程序时都会出现问题,则问题可能出在XML上。

在我来说,我认为这是设备(我有三星I5700)或SD卡的问题,因为没有我的应用程序的用户的报告同样的问题。

我打算用android重新格式化SD卡或尝试购买另一个。