xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>李明</name>
<age>30</age>
</person>
<person id="20">
<name>李向梅</name>
<age>25</age>
</person>
</persons>
pull解析代码
private ArrayList<Person> xmlParser() {
ArrayList<Person> list = null;
//xml的pull解析
try {
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(getAssets().open("config.xml"), "utf-8");
int eventType = pullParser.getEventType();
Person p = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
Log.i(TAG, "--开始解析");
list = new ArrayList<>();
break;
case XmlPullParser.START_TAG:
if ("person".equals(pullParser.getName())) {
p = new Person();
p.setId(Integer.parseInt(pullParser.getAttributeValue(0)));
} else {
if ("name".equals(pullParser.getName())) {
p.setName(pullParser.nextText());
}
// else if ("age".equals(pullParser.getName())) {
// p.setAge(Integer.parseInt(pullParser.nextText()));
// }
}
//pullParser.nextText()方法会获取当前节点的值并跳过节点的end位置,
break;
case XmlPullParser.END_TAG:
Log.i(TAG, "--解析完成一个节点" + pullParser.getName());
if ("person".equals(pullParser.getName())) {
list.add(p);
p = null;
}
break;
}
eventType = pullParser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
参考:点击打开链接