step1 导入依赖
<!-- https://mvnrepository.com/artifact/net.sf.kxml/kxml2 -->
<dependency>
<groupId>net.sf.kxml</groupId>
<artifactId>kxml2</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/xmlpull/xmlpull -->
<dependency>
<groupId>xmlpull</groupId>
<artifactId>xmlpull</artifactId>
<version>1.1.3.1</version>
</dependency>
step2 准备xml 文件:student.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<人>
<学生>
<姓名>张三</姓名>
<性别>男</性别>
<年龄>15</年龄>
<爱好>蓝球</爱好>
</学生>
<学生>
<姓名>李四</姓名>
<性别>男</性别>
<年龄>16</年龄>
<爱好>足球</爱好>
</学生>
<学生>
<姓名>花花</姓名>
<性别>男</性别>
<年龄>16</年龄>
<爱好>吃</爱好>
</学生>
</人>
step3 实体类 Student
package com.android.bean;
public class Student {
private String name;
private String sex;
private Integer age;
private String hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + ", age=" + age + ", hobby=" + hobby + "]";
}
}
step4 pull解析
package com.android.andriodM;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import com.android.bean.Student;
public class PullParseTest {
@Test
public void pullTest() throws Exception {
ArrayList<Student> list = null;
Student student = null;
// 获取xml的解析器
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(new FileInputStream(new File("student.xml")), "utf-8");
// 获取当前事件类型
int eventType = parser.getEventType();
// 解析到文档结束就会退出循环
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// 1 开始标签
case XmlPullParser.START_TAG:
// parser.getName()获取元素名字
if ("人".equals(parser.getName())) {
// 创建一个集合
list = new ArrayList<Student>();
} else if ("学生".equals(parser.getName())) {
// 创建一个学生对象
student = new Student();
} else if ("姓名".equals(parser.getName())) {
// parser.nextText():获取当前节点的下一个文本内容
student.setName(parser.nextText());
} else if ("性别".equals(parser.getName())) {
student.setSex(parser.nextText());
} else if ("年龄".equals(parser.getName())) {
student.setAge(Integer.valueOf(parser.nextText()));
} else if ("爱好".equals(parser.getName())) {
student.setHobby(parser.nextText());
}
break;
// 2 结束标签
case XmlPullParser.END_TAG:
if ("学生".equals(parser.getName())) {
// 把学生添加到一个集合
list.add(student);
break;
}
}
// 解析下一个元素
eventType = parser.next();
}
// 遍历集合
for (Student student1 : list) {
System.out.println(student1);
}
}
}
step5 结果: