若是在一個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