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     } 
原文地址:https://www.cnblogs.com/chenyangqi/p/4390152.html