android pull解析器解析xml

xml文件如下:

<?xml version="1.0" encoding="UTF-8">
<persons>
<person id="1">
<name>aa</name>
<age>30</age>
</person>
<person id="2">
<name>bb</name>
<age>22</age>
</person>
</persons>


新建一个person类:

public class Person{
private int id;
private String name;
private String age;
...getter,setter
}

读取xml文件中的内容:

/**
* 读取xml文件中的内容
* @param xml
* @return
* @throws Exception
*/
public static List<Person> getPersons(InputStream xml) throws Exception {
// 得到pull解析器
// XmlPullParser
// pull=XmlPullParserFactory.newInstance().newPullParser();
List<Person> persons = null;
Person person=null;
XmlPullParser pull = Xml.newPullParser();
pull.setInput(xml, "UTF-8");
int event = pull.getEventType();
while (event!=XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if("person".equals(pull.getName())){
int id=new Integer(pull.getAttributeValue(0));
person=new Person();
person.setId(id);
}
if("name".equals(pull.getName())){
String name=pull.nextText();
person.setName(name);
}
if("age".equals(pull.getName())){
int age=new Integer(pull.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pull.getName())){
persons.add(person);
person=null;
}
}
event=pull.next();
}
return persons;
}


保存数据到xml文件中:

/**
* 保存数据到xml文件
* @param persons
* @param out
* @throws Exception
*/
public void save(List<Person> persons,OutputStream out) throws Exception{
XmlSerializer s=Xml.newSerializer();
s.setOutput(out,"UTF-8");
s.startDocument("UTF-8", true);
s.startTag(null, "persons");
for(Person p:persons){
s.startTag(null, "person");
s.attribute(null, "id", p.getId().toString());
s.startTag(null, "name");
s.text(p.getName().toString());
s.endTag(null, "name");
s.startTag(null, "age");
s.text(p.getAge().toString());
s.endTag(null, "age");
s.endTag(null, "person");
}
s.endTag(null, "persons");
s.endDocument();
out.flush();
out.close();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值