• Android:Xml(读取与存储)


    1.读取XML文件

          参数xml是建含xml数据的输入流,List<Person> persons用于存储xml流中的数据。

          XmlPullParser类的几个方法:next(),nextToken() ,getEventType().

     1 /**
     2      * 获取xml数据
     3      * */
     4     public List<Person> getPersons(InputStream xml) throws Exception{
     5         List<Person>persons=null;
     6         Person person=null;
     7         XmlPullParser pullParser=Xml.newPullParser();
     8         //为pull解析器设置要解析的xml数据,第一个参数为输入流,第二个为该数据的编码格式
     9         pullParser.setInput(xml, "UTF-8");
    10         int envnt =pullParser.getEventType();
    11         while (envnt!=XmlPullParser.END_DOCUMENT) {
    12             switch (envnt) {
    13             case XmlPullParser.START_DOCUMENT:  //开始文件时创建实例存储数据
    14                 persons=new ArrayList<Person>();
    15                 break;
    16             case XmlPullParser.START_TAG :      //标签开始,读取数据部分
    17                 if("person".equals(pullParser.getName())){
    18                     int id=new Integer(pullParser.getAttributeValue(0));
    19                     person=new Person();
    20                     person.setId(id);
    21                 }
    22                 if("name".equals(pullParser.getName())){
    23                     String name=pullParser.nextText();
    24                     person.setName(name);
    25                 }
    26                 if("age".equals(pullParser.getName())){
    27                     Integer age=new Integer(pullParser.nextText());
    28                     person.setAge(age);
    29                 }
    30 pullParser.next(); //跳到到下一个标签
    30 break; 31 case XmlPullParser.END_TAG: //标签结束部分 32 if("person".equals(pullParser.getName())){ 33 //建解析出来的数据保存在List中,后置空person 34 persons.add(person); 35 person=null; 36 } 37 break; 38 } 39 } 40 return persons; 41 }

    2:将数据写入xml文件

              out为需要存储的xml数据类型的数据,可以存储进xml的数据类型可以是List<Person>中的。也可以是其他类型的数据。

     1 /**
     2      * 保存xml数据
     3      * */
     4     public void sava(List<Person> persons ,OutputStream out)throws Exception{
     5         //得到序列化器
     6         XmlSerializer serializer=Xml.newSerializer();
     7         //见文件写入序列化器当中
     8         serializer.setOutput(out, "UTF-8");
     9         //创建xml头文件
    10         serializer.startDocument("UTF-8", true);//true 表示该文件能不能单独存在
    11         //创建标签头
    12         serializer.startTag(null, "persons");//参数以为该文件的命名空间,参数二为标签名
    13         //创建标签尾
    14         for(Person person:persons){   //循环读取person标签的数据
    15         serializer.startTag(null, "person");
    16         serializer.attribute(null, "id", person.getId().toString());
    17         
    18         serializer.startTag(null, "name");
    19         serializer.text(person.getName().toString());
    20         serializer.endTag(null, "name");
    21         
    22         serializer.startTag(null, "age");
    23         serializer.text(person.getAge().toString());
    24         serializer.endTag(null, "age");
    25         //创建结束文档
    26         serializer.endDocument();
    27         out.flush();
    28         out.close();
    29         }    
    30     } 
  • 相关阅读:
    洛谷P4768 [NOI2018]归程(可持久化并查集,最短路)
    FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)
    洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
    洛谷P4035 [JSOI2008]球形空间产生器(高斯消元)
    洛谷P2054 [AHOI2005]洗牌(扩展欧几里德)
    洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)
    洛谷P1516 青蛙的约会(扩展欧几里德)
    Heaven of Imaginary(PKUSC2018)
    二进制高精度模板(高精度)
    洛谷UVA12995 Farey Sequence(欧拉函数,线性筛)
  • 原文地址:https://www.cnblogs.com/chenyangqi/p/4390152.html
Copyright © 2020-2023  润新知