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();
}