假设在一个XML文档中我们仅仅须要前面一部分数据。可是使用SAX方式或DOM方式会对整个文档进行解析,虽然XML文档中后面的大部分数据我们事实上都不须要解析。因此这样实际上就浪费了处理资源。

使用PULL方式正合适。

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

这是他们基本的差别。

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

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

//创建XmlPullParser,有两种方式   

    //方式一:使用工厂类XmlPullParserFactory   

    XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();   

    XmlPullParser xmlPullParser = pullFactory.newPullParser();   

    //方式二:使用Android提供的有用工具类android.util.Xml  

    XmlPullParser xmlPullParser = Xml.newPullParser();

XmlPullParser.setInput(InputStream inputStream, String inputEncoding) 解析相应的输入文件

XmlPullParser.getEventType() 得到元素

推断元素是否是START_DOCUMENT、END_DOCUMENT、START_TAG、END_TAG、TEXT中的那种,进行对应解析。

 PULL方式比較简单,并且能够依据推断停止解析(DOM和SAX都须要对文件的文章解析中途不能停止)。

pull解析和sax解析的差别的更多相关文章

  1. DOM解析和SAX解析的区别

    DOM解析和SAX解析的区别 博客分类: XML DOM SAX  DOM解析和SAX解析的区别 No 区 别 DOM解析 SAX解析 1 操作 将所有文件读取到内存中形成DOM树,如果文件量过大,则 ...

  2. 经典面试题:一张表区别DOM解析和SAX解析XML

                                                                                 ============DOM解析    vs ...

  3. Dom4j解析和sax解析xml

    xml基础知识 1)标签对大小写敏感,2)xml解析方式有两种dom解析和sax解析  3)常用的解析工具有dom的dom4j和sax的sax解析工具 4)文档声明中使用<?xml versio ...

  4. java解析XML之DOM解析和SAX解析(包含CDATA的问题)

    Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档: SAX解析是从头到尾逐行逐个元素解析,修改较为不便,但适用于只读的大文档:SAX采用事件驱动的方式解析XML.如同在电 ...

  5. java拾遗2----XML解析(二) SAX解析

    XML解析之SAX解析: SAX解析器:SAXParser类同DOM一样也在javax.xml.parsers包下,此类的实例可以从 SAXParserFactory.newSAXParser() 方 ...

  6. XML解析(二) SAX解析

    XML解析之SAX解析: SAX解析器:SAXParser类同DOM一样也在javax.xml.parsers包下,此类的实例可以从 SAXParserFactory.newSAXParser() 方 ...

  7. XML 解析---dom解析和sax解析

    眼下XML解析的方法主要用两种: 1.dom解析:(Document Object Model.即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML ...

  8. XML的概述,.Dom4解析和SAX解析

    1.什么是XML XML 指可扩展标记语言(EXtensible Markup Language) html(hyper text markup langauge) XML 是一种标记语言,很类似 H ...

  9. 非常简单的XML解析(SAX解析、pull解析)

    这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...

随机推荐

  1. 【BZOJ1050】【枚举+并查集】旅行comf

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...

  2. Linux redhat

    挂载U盘 fdisk -l 可以列出所有的分区,包括没有挂上的分区和usb设备.我一般用这个来查找需要挂载的分区的位置,比如挂上u盘. mount /dev/sdb1 usb/

  3. jquery获取form表单内容以及绑定数据到form表单

    在日常开发的过程中,难免会用到form表单,我们需要获取表单的数据保存到数据库,或者拿到后台的一串json数据,要将数据绑定到form表单上,这里我写了一个基于jquery的,formHelp插件,使 ...

  4. PHP时间戳和日期相互转换

    在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明. 1.php中时间转换函数 strtotime ...

  5. js 代码记录

    window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeight 返回当前屏幕高度(空白空间) window.screen.width ...

  6. CodeForces 554B(扫房间)

      CodeForces 554B Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u ...

  7. 【转】web开发需要知道的事情

    在StackExchange上有人问了这样一个问题:What should every programmer know about web development?(关于Web开发,什么是所有程序员需 ...

  8. 【HDOJ】2645 find the nearest station

    裸BFS. /* 2645 */ #include <iostream> #include <queue> #include <cstdio> #include & ...

  9. C++ Primer 随笔 Chapter 10 关联容器

    1.关联容器的类型:map(键-值对的集合,可理解为关联数组), set(单纯的键的集合), multimap(一个键对应多个值,键唯一), multiset(相同键可以是多个). 2.pair类型提 ...

  10. 【转】Java 字符串常用操作(String类)

    原文网址:http://www.cnblogs.com/freeabyss/archive/2013/05/15/3187057.html 字符串查找 String提供了两种查找字符串的方法,即ind ...