PULL解析XML和SAX解析的区别

若是在一个XML文档中咱们只须要前面一部分数据,可是使用SAX方式或DOM方式会对整个文档进行解析,尽管XML文档中后面的大部分数据咱们其实都不须要解析,所以这样实际上就浪费了处理资源。使用PULL方式正合适。 android

    Pull解析器和SAX解析器虽有区别但也有类似性。他们的区别为:SAX解析器的工做方式是自动将事件推入注册的事件处理器进行处理,所以你不能控制事件的处理主动结束;而Pull解析器的工做方式为容许你的应用程序代码主动从解析器中获取事件,正由于是主动获取事件,所以能够在知足了须要的条件后再也不获取事件,结束解析。这是他们主要的区别。 工具

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

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

    //建立XmlPullParser,有两种方式   
    //方式一:使用工厂类XmlPullParserFactory   
    XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();   
    XmlPullParser xmlPullParser = pullFactory.newPullParser();   
    //方式二:使用Android提供的实用工具类android.util.Xml  
    XmlPullParser xmlPullParser = Xml.newPullParser();  blog

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

    XmlPullParser.getEventType() 获得元素 资源

    判断元素是不是START_DOCUMENT、END_DOCUMENT、START_TAG、END_TAG、TEXT中的那种,进行相应解析。
 PULL方式比较简单,并且能够根据判断中止解析(DOM和SAX都须要对文件的文章解析中途不能中止)。 文档

本文出自 “开始跑” 博客,请务必保留此出处http://splend.blog.51cto.com/3717743/965246 get

相关文章
相关标签/搜索