pull解析

 
pull解析xml

public class PersonService {

       private Context context;

       

       public PersonService(Context context) {

              this.context = context;

       }

       /**

        * 把person.xml的输入流 解析 转化成list集合 

        * @param filename  assets目录下的文件名 

        * @return

        */

       public List<Person> getPersons(String filename){

              AssetManager manager = context.getAssets();

              try {

                     InputStream  is = manager.open(filename);

                     //在android下使用pull解析xml文件 

                     //1.获取pull解析器的实例

                     XmlPullParser  parser = Xml.newPullParser();

                     //2.设置解析器的一些参数 

                     parser.setInput(is, "utf-8");

                     // 获取pull解析器对应的事件类型 

                     int type = parser.getEventType();

                     Person person = null;

                     List<Person> persons = new ArrayList<Person>();

                     while(type!=XmlPullParser.END_DOCUMENT){

       

                            if(type==XmlPullParser.START_TAG){

                                   if("person".equals(parser.getName())){

                                          person = new Person();

                                          int id =Integer.parseInt( parser.getAttributeValue(0));

                                          person.setId(id);

                                   }else if("name".equals(parser.getName())){

                                          String name = parser.nextText();

                                          person.setName(name);

                                   }else if("age".equals(parser.getName())){

                                          int age = Integer.parseInt( parser.nextText());

                                          person.setAge(age);

                                   }

                            }

                            if(type==XmlPullParser.END_TAG){

                                   if("person".equals(parser.getName())){

                                          persons.add(person);

                                          person = null;

                                   }

                            }

                             type = parser.next();

                     }

                     

                     return persons;

                     

              } catch (Exception e) {

                     e.printStackTrace();

                     Toast.makeText(context, "获取person.xml失败", Toast.LENGTH_SHORT).show();

                     return null;

              }

       }

       

       /**

        * 把persons集合里面的内容写到xml文件里面 

        * @param persons person的集合

        * @return

        */

       public boolean savePersonToXml(List<Person> persons){

              try {

                     XmlSerializer  serializer =  Xml.newSerializer();

                     // /sdcard/person.xml 

                     // mount unmount 文件系统的权限 

                     File file = new File(Environment.getExternalStorageDirectory(),"person.xml");

                     FileOutputStream fos = new FileOutputStream(file);

                     serializer.setOutput(fos, "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()+"");

                            

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

                     fos.flush();

                     fos.close();

                     return true;

              } catch (Exception e) {

                     e.printStackTrace();

                     return false;

              }

       }     

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值