首先自己写一个实体类
然后进行解析,代码如下:
public class PullDemo01 {
// 解析assets/Students.xml文件
public static List<Student> parseXML(Context context) throws Exception {
List<Student>list = new ArrayList<>();
// 1.获取Pull解析工厂类对象
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 2.获取pull解析类对象
XmlPullParser xmlPullParser = factory.newPullParser();
// 3.设置要被解析的数据源
InputStream is = context.getAssets().open("Students.xml");
xmlPullParser.setInput(is,"utf-8");
// 4.获取标签的响应码
int type = xmlPullParser.getEventType();
Student student = null;
// 5.循环判断,并解析每一个节点
while (type != XmlPullParser.END_DOCUMENT) {
// 6.获取正在被解析的标签的名称
String qName = xmlPullParser.getName();
// 7.判断正在被解析的是开始标签还是结束标签
switch (type) {
case XmlPullParser.START_TAG:
if (qName.equals("student")) {
student = new Student();
}else if (qName.equals("id")) {
String id = xmlPullParser.nextText();//获取id当中的下一个文本节点2
student.setId(id);
}else if (qName.equals("name")) {
String name = xmlPullParser.nextText();
student.setName(name);
}else if (qName.equals("age")) {
String s = xmlPullParser.nextText();
int age = Integer.parseInt(s);
student.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if (qName.equals("student")) {
list.add(student);
}
break;
}
// 移动指针到下一个标签
type = xmlPullParser.next();
}
return list;
}
}