Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android设备上解析大型XML文件时出现内存问题_Xml_Android_Dom_Memory_Parsing - Fatal编程技术网

在Android设备上解析大型XML文件时出现内存问题

在Android设备上解析大型XML文件时出现内存问题,xml,android,dom,memory,parsing,Xml,Android,Dom,Memory,Parsing,我有一个Android应用程序,它可以为用户解析XML文件,并以一种更加移动友好的格式显示结果。该应用程序对大多数用户来说都很好,但有些用户拥有大量数据,应用程序因内存不足而崩溃 有没有办法让DOM样式的XML解析器在经过一定量的解析后停止解析数据?我只需要前30个左右的元素,这样可以使应用程序更加高效 我想改用SAX或pull解析器,但我正在解析的XML是无效的,我无法控制它。除非有人有一些好的SAX解决方案让我能够解析凌乱、无效的XML,否则我认为DOM是唯一的出路 谢谢你的阅读 这可能不是

我有一个Android应用程序,它可以为用户解析XML文件,并以一种更加移动友好的格式显示结果。该应用程序对大多数用户来说都很好,但有些用户拥有大量数据,应用程序因内存不足而崩溃

有没有办法让DOM样式的XML解析器在经过一定量的解析后停止解析数据?我只需要前30个左右的元素,这样可以使应用程序更加高效

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


谢谢你的阅读

这可能不是最好的解决方案,但以下是我最后做的

我使用HTTPClient获取文件,我计算出文件的最小可能大小,在该文件中仍然有我需要的数据量,并使用该信息设置请求的范围标头


这会导致请求只返回部分响应,但它在我的情况下有效。

这似乎是一项不可能完成的任务。。。“无效”是指xml不是架构有效的吗?或者它根本不是格式良好的xml?您关心的元素是否分组在公共父项下?您可以使用其他方法提取xml的这一部分,然后解析它。我不知道有哪种dom解析器允许您中途退出。感谢您的评论,XML是HTML,它有各种各样的未扫描实体,导致SAX解析器崩溃。我所需要做的就是把某个类的元素的前10个实例取出来。啊,我明白了。您可以寻找将html转换为xhtml的工具。虽然我不知道它们在安卓系统中的表现如何,但还是有一些。或者,声称自己是格式错误html的sax解析器。