XML解析
XMLpull解析
java自帶的Dom解析和SAX解析,在Android平臺下效率並不是很高,所以Android自帶的XMLpull解析,優點是邊讀取,邊解析。獲取的事件是int型,這點區別於SAX的獲取的是方法。所以pull解析可以更方便的使用Switch進行解析。
Pull解析用到的類
- XmlPullParser xpp = Xml.newPullParser();Xml工具類裏封裝了XmlPullParserFactory類,更方便的使用。
主要代碼
XmlPullParser xmlPullParser = Xml.newPullParser();
InputStream is = this.getAssets().open("beauties.xml");
xmlPullParser.setInput(is, "UTF-8");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// 判斷當前事件是否爲文檔開始事件
case XmlPullParser.START_DOCUMENT:
...
break;
// 判斷當前事件是否爲標籤元素開始事件
case XmlPullParser.START_TAG:
if (xmlPullParser.getName().equals("beauty")) {
beauty = new Beauty();
} else if (xmlPullParser.getName().equals("name")) {
xmlPullParser.next();
beauty.setName(xmlPullParser.getText());
} else if (xmlPullParser.getName().equals("age")) {
xmlPullParser.next();
beauty.setAge(xmlPullParser.getText());
}
break;
// 判斷當前事件是否爲標籤元素結束事件
case XmlPullParser.END_TAG:
if (xmlPullParser.getName().equals("beauty")) {
mList.add(beauty);
beauty = null;
}
break;
}
// 進入下一個元素並觸發相應事件
eventType = xmlPullParser.next();
}