public class Person { private Integer id; private String name; private Short age; public Person(){} public Person(Integer id, String name, Short age) { this.id = id; this.name = name; this.age = age; }
3.使用pull解析器解析person.xml文件
public class PersonService { public static List<Person> getPersons(InputStream xml) throws Exception{ //接收一个xml文件对象 List<Person> persons = null; Person person = null; XmlPullParser parser = Xml.newPullParser(); //利用Android的Xml工具类获取xmlPull解析器 parser.setInput(xml, "UTF-8"); //解析文件,设置字符集 int event = parser.getEventType(); //获取解析状态,返回的是int型数字状态 while(event != XmlPullParser.END_DOCUMENT){ //如果状态不是结束事件END_DOCUMENT,就递归 switch (event) { case XmlPullParser.START_DOCUMENT: //如果为开始解析头标签START_DOCUMENT,初始化数据 persons = new ArrayList<Person>();
case XmlPullParser.START_TAG: //如果为开始解析属性START_TAG,则获取数据 if("person".equals(parser.getName())){ //如果属性名为制定名称则根据属性索引值获取数据 Integer personid = new Integer(parser.getAttributeValue(0)); person = new Person(); //创建对象封装属性 person.setId(personid); }else if("name".equals(parser.getName())){ person.setName(parser.nextText()); //如果要获取的数据在text中则调用nextText()方法获取 }else if("age".equals(parser.getName())){ person.setAge(new Short(parser.nextText())); } case XmlPullParser.END_TAG: //当触发xml文档结束事件的名称为person(即解析结束位置),将封装对象放入集合,再将对象制空 if("person".equals(parser.getName())){ persons.add(person); person = null; } break; } event = parser.next(); //让指针指向下一个节点 } return persons; }