Android已經集成進了Pull解析器,因此無需添加任何jar文件。android系統自己使用到的各類xml文件,其內部也是採用Pull解析器進行解析的。 Pull解析器的運行方式與 SAX 解析器類似。它提供了相似的事件,如:開始元素和結束元素事件,使用parser.next()能夠進入下一個元素並觸發相應事件。跟SAX不一樣的是, Pull解析器產生的事件是一個數字,而非方法,所以能夠使用一個switch對感興趣的事件進行處理。當元素開始解析時,調用parser.nextText()方法能夠獲取下一個Text類型節點的值。android
pull解析xml步驟主要以下:編碼
假設解析下列xml文件:spa
<?xml version="1.0" encoding="UTF-8"?>xml
<persons>對象
<person id=「18">事件
<name>allen</name>utf-8
<age>36</age>get
</person>it
<person id=「28">io
<name>james</name>
<age>25</age>
</person>
</persons>
(1)得到pull解析器對象
XmlPullParser parser = Xml.newPullParser();
(2)指定解析的文件和編碼格式
parser.setInput(fis, "utf-8");
(3)得到事件類型(得到各標籤類型)
int eventType = parser.getEventType();
(4)根據各標籤信息進行必要數據的讀取
while(eventType != XmlPullParser.END_DOCUMENT) {
//沒有到結束標籤
String tagName = parser.getName(); // 得到當前節點的名稱
switch (eventType) {
case XmlPullParser.START_TAG: // 當前等於開始節點<person>
if("persons".equals(tagName)) { // <persons>
//相關操做
} else if("person".equals(tagName)) { // <person id="1">
//相關操做
} else if("name".equals(tagName)) { // <name>
person.setName(parser.nextText());
} else if("age".equals(tagName)) { // <age>
//相關操做
}
break;
case XmlPullParser.END_TAG: //讀取結束 </persons>
if("persons".equals(tagName)) {
//相關操做
}
break;
default:
break;
}
eventType = parser.next();// 下一個
}