<?xml version="1.0" encoding="UTF-8"?><!--XML文档开始-->
<persons><!--根节点开始-->
<person id="12"><!--元素节点开始-->
<name>zhang</name><!--文本节点-->
<age>21</age><!--文本节点-->
</person><!--元素节点结束-->
<person id="32">
<name>liu</name>
<age>22</age>
</person>
</persons><!--根节点结束-->
<!--XML文档结束-->
public class XmlManager {
/**
* 使用pull解析XML
*/
public static List<Person> parseXml(InputStream xml) throws Exception{
List<Person> persons = null; // 节点集合
Person person = null; // 节点对象
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml,"UTF-8");
int event = pullParser.getEventType();
while(event != XmlPullParser.END_DOCUMENT) // XML文档结束
{
switch(event){
case XmlPullParser.START_DOCUMENT: // XML文档开始
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;
}
/**
* 使用pull创建XML
*/
public static void createXml(List<Person> persons,OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out,"UTF-8");
serializer.startDocument("UTF-8", true); // XML文档开始
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());
serializer.endTag(null, "Age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons"); // 根节点结束
serializer.endDocument(); // XML文档结束
out.flush();
out.close();
}
}