原文链接: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提供了5种方式存储数据:
  2. Android下使用C语言的四种编译方式
  3. Android(安卓)ApiDemos示例解析(108):Views->Controls->2. Defau
  4. Android之键盘点击事件
  5. Android(安卓)模拟按键
  6. Android之Touch事件分发机制
  7. android整合--屏幕旋转触发事件
  8. Android(安卓)ApiDemos示例解析(15):App->Activity->SetWallpaper
  9. Android的两种数据存储方式分析(一)

随机推荐

  1. Android(安卓)sdk配置 常见问题及处理方
  2. EditText实现横向光标
  3. android EventBus源码解析
  4. Android(安卓)实现轮播图效果(三) 底部圆点
  5. Android(安卓)后台定时任务的实现和改进
  6. android系统 在jack-server下 生成 jar
  7. Android(安卓)retrofit网络交互在后台返
  8. Android简易计算器(四)—— 完整逻辑代码
  9. iOS开发-UITableView常用方法
  10. Android实现 广告识别之 广告库