解析Xml有三種方式可選,sax ,dom ,pull 。 Dom在android上效能不是很少,在android上首選sax和pull。
前段時間寫了個Android天氣預報的Demo,涉及到了pull解析Xml,pull的解析算是比較簡單易用,
下面總結一下自己用pull解析xml的學習經驗。
附上天氣預報deme代碼:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=248543&page=1&extra=#pid2291325
擷取省份資訊:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince?
通過上面這個地址,我們可以用HttpGet去可以擷取到省份Xml常值內容,擷取到Xml文本步驟就省略了,
得到Xml內容如下:
直轄市特別行政區黑龍江吉林遼寧內蒙古河北河南山東山西江蘇安徽陝西寧夏甘肅青海
1.首先用到XmL的 靜態方法去擷取一個解析器XmlPullParser執行個體:
XmlPullParser xmlPullParser = Xml.newPullParser();
2.設定輸入資料流
xmlPullParser.setInput(inStream, "UTF-8");
這裡的輸入資料流inStream就是擷取的Xml檔案的輸入資料流。
3,擷取事件類型
eventCode = xmlPullParser.getEventType();
這裡的事件類型一共有以下幾種比較常用到:
XmlPullParser.START_DOCUMENT
邏輯思路:
利用While語句,對文檔進行遍曆,每個While中,用switch去判斷事件類型,進行相應處理,處理中利用
= xmlPullParser.getName();
判斷標籤的詳細類型,再進行更詳細的處理,每次迴圈結束用下面語句把遊標移動到下一個標籤上,進行下次while迴圈
eventCode = xmlPullParser.next();
直到
= XmlPullParser.END_DOCUMENT
表明文檔已經結束,則解析完成。
具體代碼:
ArrayList<String><String> data = ArrayList<String>="UTF-8" eventCode = (eventCode !== XmlPullParser.START_DOCUMENT: XmlPullParser.START_TAG: (name.equalsIgnoreCase("string"(type ==2) data.add(xmlPullParser.nextText() .split("\\(")[0 XmlPullParser.END_TAG: XmlPullParser.END_DOCUMENT: =