android pull解析器解析xml

xml文件如下: 
Xml代码 
  1. <?xml version="1.0" encoding="UTF-8">  
  2. <persons>  
  3.     <person id="1">  
  4.         <name>aa</name>  
  5.         <age>30</age>  
  6.     </person>  
  7.     <person id="2">  
  8.         <name>bb</name>  
  9.         <age>22</age>  
  10.     </person>  
  11. </persons>  


新建一个person类: 
Java代码 
  1. public class Person{  
  2.   private int id;  
  3.   private String name;  
  4.   private String age;  
  5.   ...getter,setter  
  6. }  

读取xml文件中的内容: 
Java代码 
  1. /** 
  2.      * 读取xml文件中的内容 
  3.      * @param xml 
  4.      * @return 
  5.      * @throws Exception 
  6.      */  
  7.     public static List<Person> getPersons(InputStream xml) throws Exception {  
  8.         // 得到pull解析器  
  9.         // XmlPullParser  
  10.         // pull=XmlPullParserFactory.newInstance().newPullParser();  
  11.         List<Person> persons = null;  
  12.         Person person=null;  
  13.         XmlPullParser pull = Xml.newPullParser();  
  14.         pull.setInput(xml, "UTF-8");  
  15.         int event = pull.getEventType();  
  16.         while (event!=XmlPullParser.END_DOCUMENT) {  
  17.             switch (event) {  
  18.             case XmlPullParser.START_DOCUMENT:  
  19.                 persons = new ArrayList<Person>();  
  20.                 break;  
  21.             case XmlPullParser.START_TAG:  
  22.                 if("person".equals(pull.getName())){  
  23.                     int id=new Integer(pull.getAttributeValue(0));  
  24.                     person=new Person();  
  25.                     person.setId(id);  
  26.                 }  
  27.                 if("name".equals(pull.getName())){  
  28.                     String name=pull.nextText();  
  29.                     person.setName(name);  
  30.                 }  
  31.                 if("age".equals(pull.getName())){  
  32.                     int age=new Integer(pull.nextText());  
  33.                     person.setAge(age);  
  34.                 }  
  35.                 break;  
  36.             case XmlPullParser.END_TAG:  
  37.                 if("person".equals(pull.getName())){  
  38.                     persons.add(person);  
  39.                     person=null;  
  40.                 }  
  41.             }  
  42.             event=pull.next();  
  43.         }  
  44.         return persons;  
  45.     }  


保存数据到xml文件中: 
Java代码 
  1. /** 
  2.      * 保存数据到xml文件 
  3.      * @param persons 
  4.      * @param out 
  5.      * @throws Exception 
  6.      */  
  7.     public void save(List<Person> persons,OutputStream out) throws Exception{  
  8.         XmlSerializer s=Xml.newSerializer();  
  9.         s.setOutput(out,"UTF-8");  
  10.         s.startDocument("UTF-8"true);  
  11.         s.startTag(null"persons");  
  12.         for(Person p:persons){  
  13.             s.startTag(null"person");  
  14.             s.attribute(null"id", p.getId().toString());  
  15.             s.startTag(null"name");  
  16.             s.text(p.getName().toString());  
  17.             s.endTag(null"name");  
  18.             s.startTag(null"age");  
  19.             s.text(p.getAge().toString());  
  20.             s.endTag(null"age");  
  21.             s.endTag(null"person");  
  22.         }  
  23.         s.endTag(null"persons");  
  24.         s.endDocument();  
  25.         out.flush();  
  26.         out.close();  
  27.     }  
  28. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值