【发布时间】: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