XML使用SAX解析与PULL解析的区别

原创 2015年07月10日 15:18:57

XML使用SAX解析与PULL解析的区别

在最近的应用中,经常会用到对XML的解析,但是一直有一个疑问就是SAX解析与PULL解析的区别到底是什么。搜索了相关的问题,整理如下,以便大家查询。

我们知道,SAX解析是事件驱动的,它不会将整个文档读入内存再解析,而是在读取文档的过程中就解析它,所以,文档读入的过程也就是SAX解析的过程。虽然,SAX方式解析XML不会将整个文档放入内存,但它还是会遍历完毕文档中所有的节点。那么,当我们在解析XML文件时,如果只需要文档前边或是中间一小部分数据,使用SAX解析就浪费了处理器资源,这时我们使用PULL解析就非常合适了。

SAX是一种基于“推”的解析方式,这种解析方法速度快、占用内存少,但是它需要应用程序自己处理解析器的状态,实现起来会比较麻烦,而且它只支持对XML文件的读取,不支持写入。“推”到底是怎么回事呢?SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此我们不能控制事件的处理主动结束。

PULL则是一种基于“拉”的解析方式,即应用程序根据自己的需要控制解析器的读取。这种方式继承了SAX解析速度快、占用内存少等优点,同时它也保持了接口简单、编程容易等特点。“拉”又是怎么回事呢?PULL解析器的工作方式为允许应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。

使用SAX解析,在解析器解析过程中通过回调把TAB/VALUE值等传给我们,我们可以直接拿到这些值进行比较、处理。而PULL的原理是它只告诉我们一个TAG开始或者结束了,至于TAG/VALUE的值是什么需要我们自己去向解析器问,所以叫做PULL(拉),而SAX看起来是PUSH(推)给我们的。

其实再从我们之前的例子中也可以看出SAX与PULL之间的区别,PULL是使用一个循环结构,循环体中我们可以随时跳出(break),而SAX不是,SAX是只要开始解析了,就必须解析完成。所以PULL的使用比SAX会更加灵活,在Android的开发中,更推荐使用PULL解析XML。

版权声明:本文为博主原创文章,未经博主允许不得转载。

XML解析中SAX和XMLpull的区别

最近在写一个rss应用,自然设计到对XML的处理,不懂为什么他使用的是XMLPULL而不是SAX.Baidu了下,原来如此  如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方...
  • leorowe
  • leorowe
  • 2011年10月03日 03:21
  • 12635

使用PULL解析XML文件

XmlPull和Sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此Xmlpull和 Sax都比较节约内存资源,不会象Dom那样要把所有节点...
  • wangkuifeng0118
  • wangkuifeng0118
  • 2012年03月02日 17:56
  • 14019

XML概述以及Pull解析详解

XML概述以及Pull解析详解 ONE Goal ,ONE Passion ! 做Android开发最多的都是json.而且解析xml都用Xstream,慢慢地xml的手动解析都快忘记了.概述:XML...
  • fengltxx
  • fengltxx
  • 2016年06月26日 20:07
  • 1568

使用Pull解析XML获取新浪新闻

目标是获取新浪新闻如图所示位置的头条新闻数据: 思路是这样的,先访问这个首页拿到这个部分每一条新闻的url,然后再逐一访问这些详情页面,从详情页面获取标题正文图片等数据。 ...
  • zhang___yong
  • zhang___yong
  • 2017年03月19日 18:20
  • 304

Android之PULL解析XML

今天我们一起通过一个小例子来学习一下使用PULL解析器解析XML文件。 (1)首先我们放一个文件名为beauties.xml的XML文件到assets目录下,文件内容如下: ...
  • bear_huangzhen
  • bear_huangzhen
  • 2014年04月29日 10:22
  • 25620

XML PULL解析

Pull和Sax类似,都是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此Pull和Sax都比较节约内存资源,不会象Dom那样要把所有节点以对橡树的形...
  • Caesardadi
  • Caesardadi
  • 2013年03月05日 16:55
  • 11599

XML解析(三),PULL解析XML

昨天写了【XML解析(一)】SAX解析XML 和【XML解析(二)】DOM解析XML两篇文章,有兴趣的朋友可以去看一下,今天我们来学习一下PULL解析XML,刚好可以跟SAX和DOC解析XML的两种方...
  • ydxlt
  • ydxlt
  • 2015年12月06日 08:52
  • 9096

使用Pull解析器解析XML文件和写XML

本文是基于黎活明老师的传智博客android第7个和8个视频总结的,如果想更清楚的理解,建议观看视频以下面这个xml文件为例李明30李向梅25里面的所有东西都可以统称为节点  李明  30  都为节点...
  • lyh7736362
  • lyh7736362
  • 2011年03月08日 10:29
  • 4098

android之Xml的高效解析方式——pull

我们知道,解析XML在各个平台使用也非常广泛,android也是一样,经常会涉及到XML的解析读取,解析方式主要有三种:SAX解析器、DOM解析器和PULL解析器。 SAX解析器:它的核心是事件处理...
  • qq_21983189
  • qq_21983189
  • 2017年02月14日 12:09
  • 1092

pull解析xml

  • 2014年07月08日 09:50
  • 19.49MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML使用SAX解析与PULL解析的区别
举报原因:
原因补充:

(最多只允许输入30个字)