1 package com.example.xmldemo.test;  2   3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileNotFoundException;  6 import java.io.FileOutputStream;  7 import java.io.IOException;  8 import java.io.InputStreamReader;  9 import java.util.ArrayList; 10 import java.util.List; 11  12 import org.xmlpull.v1.XmlPullParser; 13 import org.xmlpull.v1.XmlSerializer; 14  15 import com.example.xmldemo.Person; 16  17 import android.os.Environment; 18 import android.test.AndroidTestCase; 19 import android.util.Log; 20 import android.util.Xml; 21  22 public class XmlTest extends AndroidTestCase 23 {     24     public void test() 25     { 26         writeLocal(); 27          28         List<Person> personList = parseXml(); 29         for(Person person : personList) 30         { 31             Log.i("XmlTest", person.toString()); 32         } 33     } 34     /** 35      * 写xml文件大本地 36      */ 37     public void writeLocal() 38     { 39         List<Person> personList = getPersonList(); 40         //获得序列化对象 41         XmlSerializer serializer = Xml.newSerializer(); 42         //  43         try 44         { 45             //创建文件流对象 46             File file = new File("data/data/com.example.xmldemo", "persons.xml"); 47             FileOutputStream fos = new FileOutputStream(file); 48             //设置文件的输出流 49             serializer.setOutput(fos, "UTF-8"); 50             serializer.startDocument("utf-8", true); //<?xml version 51             serializer.startTag(null, "persons"); //<persons> 52             for(Person person : personList) 53             { 54                 serializer.startTag(null, "person"); //<person> 55                 serializer.attribute(null, "id", String.valueOf(person.getId())); 56                 serializer.startTag(null, "name"); //<name> 57                 serializer.text(person.getName()); // kite1 58                 serializer.endTag(null, "name"); //</name> 59                 serializer.startTag(null, "age"); //<age> 60                 serializer.text(String.valueOf(person.getAge())); 61                 serializer.endTag(null, "age");//</age> 62                 serializer.endTag(null, "person"); //<person> 63             } 64             serializer.endTag(null, "persons"); //</persons> 65             serializer.endDocument(); 66             serializer.flush(); 67             fos.flush(); 68             fos.close(); 69         } catch (Exception e) 70         { 71             e.printStackTrace(); 72         } 73          74     } 75     /** 76      * 获得personList 77      * @return 78      */ 79     public List<Person> getPersonList() 80     { 81         List<Person> personList = new ArrayList<Person>(); 82         for(int i = 0; i < 30; i++) 83         { 84             Person person = new Person(i, "kite" + 1,18 + i); 85             personList.add(person); 86         } 87         return personList; 88     } 89      90     public List<Person> parseXml() 91     { 92      93         try 94         { 95             //创建文件流对象 96             File file = new File("data/data/com.example.xmldemo", "persons.xml"); 97             FileInputStream fis = new FileInputStream(file); 98             //获得pull 解析对象 99             XmlPullParser parser = Xml.newPullParser();100             // 指定解析的文件和编码格式101             parser.setInput(fis,"utf-8");102             int eventType = parser.getEventType(); //获得事件的类型103             104             //初始化集合105             List<Person> personList = null;106             Person person = null;107             //如果不是最后的endDocument108             while(eventType != XmlPullParser.END_DOCUMENT)109             {110                 String tagName = parser.getName();111                 switch (eventType)112                 {113                 case XmlPullParser.START_TAG:114                         //如果是最开始的persons 根节点初始化115                         if("persons".equals(tagName))116                         {117                             personList = new ArrayList<Person>();118                         } else if("person".equals(tagName))119                         {120                             //初始化person对象121                             person = new Person();122                             123                             //获得id124                             String id =  parser.getAttributeValue(null, "id");125                             person.setId(Integer.parseInt(id));126                         } else if("name".equals(tagName))127                         {128                             person.setName(parser.nextText());129                         } else if("age".equals(tagName))130                         {131                             person.setAge(Integer.parseInt(parser.nextText()));132                         }133                     break;134                 case XmlPullParser.END_TAG:135                     //如果是结束标记136                     if("person".equals(tagName))137                     {138                         // 需要把上面设置好值的person对象添加到集合中139                         personList.add(person);140                     } 141                     break;142                 default:    143                     break;144                 }145                 //获得下一个事件146                 eventType = parser.next();147             }148             return personList;149         } catch (Exception e)150         {151             // TODO Auto-generated catch block152             e.printStackTrace();153         }154         return null;155     }156     157 }
View Code

更多相关文章

  1. Android中设置全屏的方法
  2. react-native apk打包 android
  3. Android多媒体开发(4)————移植Libmad到android平台
  4. Android(安卓)反射获得控件对象
  5. Android(安卓)Service简单示例
  6. [Android] ImageButton | Button | TextView 点击和触摸效果实现
  7. Android遍历SqlLite cursor对象:
  8. 类和 Json对象
  9. NPM 和webpack 的基础使用

随机推荐

  1. spring android 编译环境搭建
  2. Android HttpURLConnection网络通信
  3. Android 开发时遇到的两个模拟器问题
  4. 解析Android如何利用Handler
  5. Android官方入门文档[3]构建一个简单的用
  6. TextVview的属性
  7. Android Studio中Gradle使用详解
  8. Android OnTouchListener实时监听触点坐
  9. android 下载文件注意事项
  10. android 如何判断软件是否第一次运行?