一、在android平台可以使用SAX:Simple API for XML,Document Object Model(DOM)和android自带的pull解析器解析XML文件
Android已经集成了pull解析器,所以不用添加任何jar文件,跟sax运行方式类似,但是pull解析器产生的事件是一个数字。
xml文件,存放在src下,获取文件输入流时候 InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");
<?xml version="1.0" encoding = "UTF-8">
<persons>
<person id="123">
<name>limiting</name>
<age>30</age>
</person>
<person id="20">
<name>zhangxiaoxiao</name>
<age>25</age>
</person>
</persons>
解析xml文件,返回list集合
public class PersonService {
public static List<Person> getPerson(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:
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:
if("person".equals(pullparser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullparser.next();
}
return persons;
}
保存成为xml格式
/**
* 保存数据
* @param persons 数据
* @param out 输出方向
* @throws Exception
*/
public static void save(List<Person> persons,OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out,"UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for(Person person : persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString());
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
out.flush();
out.close();
}
}