zoukankan      html  css  js  c++  java
  • 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     } 
  • 相关阅读:
    Python基础之只接收关键字参数的函数
    Python基础之可接受任意数量参数的函数
    Django基础之创建admin账号
    GIT版本控制工具
    全站导航
    python中对url编码解码处理
    VUE安装及初始化报错解决办法
    使用Appium+python爬取手机App
    python发送QQ邮件
    docker部署flask项目
  • 原文地址:https://www.cnblogs.com/chenyangqi/p/4390152.html
Copyright © 2011-2022 走看看