使用PUll方式解析XML对象的模板

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>liming</name>
<age>30</age>
</person>
<person id="20">
<name>zhangxiaoxiao</name>
<age>25</age>
</person>
</persons>

实体类:

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;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public Person(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Person(){}
}

 

 

/**
* 传进来一个输入流对象,解析之后返回一个存放实体对象的数组
* @param xml
* @return
* @throws Exception
*/
public static List<Person> getPersons(InputStream xml) throws Exception{
List<Person> persons = null; //这个数组用于存放实体然后返回
Person person = null; //定义实力类对象,存放解析出来的数据
XmlPullParser pullParser = Xml.newPullParser(); //得到一个解析器
pullParser.setInput(xml, "UTF-8");//为Pull解析器设置要解析的XML数据
int event = pullParser.getEventType();
while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT: //
persons = new ArrayList<Person>();
break;

case XmlPullParser.START_TAG: //每一个元素都是一个TAG
if("person".equals(pullParser.getName())){ //取得当前节点的名称
int id = new Integer(pullParser.getAttributeValue(0)); //获取属性值
person = new Person();
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name = pullParser.nextText(); //获取元素的内容
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(pullParser.nextText());
person.setAge(age);
}
break;

case XmlPullParser.END_TAG: //当一个结束事件是“person节点时”,进行实体存放
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next(); //移动解析器指针到下一个元素(节点)
}
return persons; //返回集合数组
}

posted @ 2015-04-05 13:18  壮汉请留步  阅读(224)  评论(0编辑  收藏  举报