原文链接:http://blog.csdn.net/liuhe688/article/details/6415593

Android下解析xml,最好的方式是PULL,在xml.java中就只有一个 newPullParser(),说明是推荐使用的。在系统源码里面也都广泛使用。简单方便内存下速度快。是介于Sax和Dom的中间方法。

附件中是Demo工程,详细内容请参考原文链接。

一.基础知识

通过前面的学习我们已经知道了Android上使用SAXDOM方式解析XML的方法,并且对两种做了简单的比较,通过比较我们知道对在往往内存比较稀缺的移动设备上运行的Android系统来说,SAX是一种比较合适的XML解析方式。

但是SAX方式的特点是需要解析完整个文档才会返回,如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方式还是会对整个文档进行解析,尽管XML文档中后面的大部分数据我们其实都不需要解析,因此这样实际上就浪费了处理资源。

就以USGS的地震数据为例,USGS网上的这个数据是定时更新的,但是一次更新往往只更新前面几条地震数据,大部分数据还是相同的,因此我们在解析时可以在上一次解析的结果之上根据<updated>元素标签中的值解析前面几条比之前updated值更新的地震数据即可。但是如果使用SAX方式的话,每次还是都会解析整个XML文档,而这却浪费了处理器资源和延长了处理的时间。

不过Android系统还提供了另一种XML解析方式可以使你更好的处理这种情况,就是Pull方式解析XML数据。

Pull解析器和SAX解析器虽有区别但也有相似性。他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理主动结束;而Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。这是他们主要的区别。

而他们的相似性在运行方式上,Pull解析器也提供了类似SAX的事件(开始文档START_DOCUMENT和结束文档END_DOCUMENT,开始元素START_TAG和结束元素END_TAG,遇到元素内容TEXT等),但需要调用next()方法提取它们(主动提取事件)。

Android系统中和Pull方式相关的包为org.xmlpull.v1,在这个包中提供了Pull解析器的工厂类XmlPullParserFactoryPull解析器XmlPullParserXmlPullParserFactory实例调用newPullParser方法创建XmlPullParser解析器实例,接着XmlPullParser实例就可以调用getEventType()next()等方法依次主动提取事件,并根据提取的事件类型进行相应的逻辑处理。

更多相关文章

  1. Android -- android activity 各种布局方式以及相关参数
  2. Android 媒体库数据更新
  3. Android提供了5种方式存储数据:
  4. android之从Bmob获取数据显示在ListView中
  5. Axis2与Android的Json(Gson)通信传数据
  6. android实现视频播放的几种方式
  7. Android的两种数据存储方式分析(一)
  8. Android之Touch事件分发机制

随机推荐

  1. adb通过wifi连接 milestone
  2. 我的第一个Android程序,BMI计算器,分享一下
  3. android:The application has stopped une
  4. Android之FastJSon基本使用,属性首字母大
  5. [转]android adapter 深刻分析
  6. Android(安卓)开发错误集锦
  7. 使用Canvas的drawTextOnPath方法实现沿着
  8. Android(安卓)Studio第一次安装遇见的问
  9. Android(安卓)SurfaceFlinger 学习之路(
  10. android 获取进程、服务、任务列表