需要读取的xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<persons>
<persons id="23">
<name>liming</name>
<age>30</age>
</persons>
<persons id="20">
<name>zhangxiaoxiao</name>
<age>25</age>
</persons>
</persons>
用来保存读取出来的对象
package com.example.myxmlpull;
public class Person {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
读取xml文件
package com.example.myxmlpull;
import android.util.Xml;
import junit.framework.TestCase;
import org.xmlpull.v1.XmlPullParser;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class PersonTest extends TestCase {
public List<Person> getPerson(InputStream xml) throws Exception {
List<Person> person=null;
Person persons=null;
//XmlPullParserFactory.newInstance()得到Pull解析器工厂
//newPullParser()得到XmlPullParser对象
//XmlPullParser pullParser= XmlPullParserFactory.newInstance().newPullParser();
//得到Pull解析器对象
XmlPullParser pullParser= Xml.newPullParser();
//为pull解析器设置要解析的XML数据
//1要解析的xml文件数据 2编码
pullParser.setInput(xml,"UTF-8");
//产生事件
int event=pullParser.getEventType();
//只要不是文档END_DOCUMENT结束事件就一直执行
while (event!=XmlPullParser.END_DOCUMENT) {
//判断事件
switch (event) {
//START_DOCUMENT文档开始事件
case XmlPullParser.START_DOCUMENT:
//初始化person
person = new ArrayList<Person>();
break;
//节点的开始
case XmlPullParser.START_TAG:
//pullParser.getName()获取指针所指向的节点的名称是否是person
if ("person".equals(pullParser.getName())){
//getAttributeValue获取第0个属性,,,,参数是属性的索引值
//获取了id
int id=new Integer(pullParser.getAttributeValue(0));
//添加进对象
persons.setId(id);
//添加进集合
person.add(persons);
}
if ("name".equals(pullParser.getName())){
//后面文本节点的值
String name=pullParser.nextText();
persons.setName(name);
person.add(persons);
}
if ("age".equals(pullParser.getName())){
//后面文本节点的值
//封装成int类型
int age=new Integer(pullParser.nextText());
persons.setAge(age);
person.add(persons);
}
break;
//END_TAG每个节点的结束
case XmlPullParser.END_TAG:
break;
}
//跳转下个节点
event = pullParser.next();
}
return null;
}
public void tearDown() throws Exception {
}
}