<apps>
<app>
<id>1</id>
<name>Google</name>
<version>1.0</version>
</app>
<app>
<id>2</id>
<name>Chrome</name>
<version>2.1</version>
</app>
<app>
<id>3</id>
<name>Google Play</name>
<version>2.3</version>
</app>
</apps>
首先创建一个XmlPullParserFactory对象;(工厂模式需要newInstance())
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
再用工厂创建解析器;
XmlPullParser parser=factory.newPullParser();
Reader reader=new StringReader(response);
parser.setInput(reader);
int eventType=parser.getEventType();
String id="";
String name="";
String version="";
while (eventType!=XmlPullParser.END_DOCUMENT) {
String nodeName=parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("id".equals(nodeName)) {
try {
id=parser.nextText();
} catch (IOException e) {
e.printStackTrace();
}
}else if ("name".equals(nodeName)) {
try {
name=parser.nextText();
} catch (IOException e) {
e.printStackTrace();
}
}else if ("version".equals(nodeName)) {
try {
version=parser.nextText();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
case XmlPullParser.END_TAG:
if ("app".equals(nodeName)) {
Log.i("TAG","id="+id);
Log.i("TAG","name="+name);
Log.i("TAG","version="+version);
}
break;
default:
break;
}
try {
eventType=parser.next();
} catch (IOException e) {
e.printStackTrace();
}
}
“
解析器调用setInput()方法将xml文件数据设置进去开始解析
通过getEventType()得到当前的解析事件,当XmlPullParser.END_DOCUMENT不等于当前的解析事件时,在while循环中不停的解析调用nextText()方法可以获取下一个解析事件。
循环中通过getName()方法得到当前的节点的名字,如果节点等于id,name,version调用nextText()获取节点中的具体内容,解析完一个app节点就打印获取的内容。