在Android中处理大型XML文件

时间:2012-03-17 07:15:44

标签: android xml

我是Android开发的新手,想要创建一个Google地图应用。我必须使用2个带有地理数据(latlons)的大型XML文件,1个是2mb,另一个是8mb大。

访问和解析此数据的最快方法是什么?是否可能将其存储到数据库中?我认为网络服务并不是一个好主意,因为每次应用程序启动时我都需要加载10 MB ...而且这种处理速度非常慢我猜...

有人有一些好的建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

将整个数据保存在服务器中,并使用webservices从设备访问它。由于数据太大,最好选择SAX解析器。如果可能,最好从服务器端实现搜索功能或从服务器端实现分页。

答案 1 :(得分:1)

也许您可以创建某种元数据以与大型xml文件一起使用。此元数据可以指向大型xml文件的特定部分。每个小部分都可以是dom对象而不是sax解析器。

我建议使用sax,在某种哈希表(简单键值对)中创建所需数据的摘要并使用它。可能正在将SharedPreferences用于不会更改的数据。

此外,您还需要考虑如何/将使用何种数据以及使用频率。可能是您可以保留生产者消费者体系结构,其中线程准备数据以供使用,并且消费者在准备好通知时使用它。

你需要从3个角度思考

  • 没有太多的串行处理
  • 不重做已解析的内容
  • 使用正确的数据量解析。实际上,可以考虑使用小型部件,以便让您的设计更容易入手。

我不推荐整个树的DOM。您需要使用SAX和DOM的组合。

首先让它工作,然后记录响应/性能延迟,并逐步提高它从最坏到最好的方式。