【问题标题】:Memory Issues When DOM Parsing A Large XML File on Android DevicesDOM 在 Android 设备上解析大型 XML 文件时的内存问题
【发布时间】:2010-06-15 20:28:10
【问题描述】:

我有一个 Android 应用程序,它为用户解析 XML 文件并以更适合移动设备的格式显示结果。该应用程序适用于大多数用户,但有些用户拥有大量数据,应用程序会因为内存不足而崩溃。

有什么方法可以让 DOM 样式的 XML 解析器在解析一定数量后退出解析数据?我只需要前 30 个左右的元素,这样会使应用程序更加高效。

我想改用 SAX 或拉式解析器,但我正在解析的 XML 无效,我无法控制它。除非有人有一些好的 SAX 解决方案可以让我解析混乱、无效的 XML,否则我认为 DOM 是唯一的出路。

感谢阅读!

【问题讨论】:

  • 这似乎是一项不可能完成的任务...无效,您的意思是 xml 不是架构有效的吗?或者它根本不是格式良好的xml?您关心的元素是否分组在一个共同的父项下?您也许可以使用其他方法仅提取 xml 的那一部分,然后对其进行解析。我不知道有任何 dom 解析器可以让你称之为中途退出。
  • 感谢您的评论,XML 是 HTML,它有各种导致 SAX 解析器崩溃的未转义实体。我需要做的就是提取具有特定类的元素的前 10 个实例。
  • 啊,我明白了。您可能会寻找将 html 转换为 xhtml 的工具。那里有一些,虽然我不知道它们在android中的表现如何。或者,ccil.org/~cowan/XML/tagsoup 声称是用于格式错误的 html 的 sax 解析器。

标签: xml android dom memory parsing


【解决方案1】:

这可能不是最好的解决方案,但这是我最终要做的。

我正在使用 HTTPClient 来获取文件,我想出了文件的最小可能大小,它仍然具有我需要的数据量,并使用该信息来设置请求的范围标头。

这会导致请求仅返回部分响应,但它适用于我的情况。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2016-11-07
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多