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();
	}
}


猜你喜欢

转载自yaohuiye.iteye.com/blog/1685073