1 packagecom.example.xmldemo.test;2
3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileNotFoundException;6 importjava.io.FileOutputStream;7 importjava.io.IOException;8 importjava.io.InputStreamReader;9 importjava.util.ArrayList;10 importjava.util.List;11
12 importorg.xmlpull.v1.XmlPullParser;13 importorg.xmlpull.v1.XmlSerializer;14
15 importcom.example.xmldemo.Person;16
17 importandroid.os.Environment;18 importandroid.test.AndroidTestCase;19 importandroid.util.Log;20 importandroid.util.Xml;21
22 public class XmlTest extendsAndroidTestCase23 {24 public voidtest()25 {26 writeLocal();27
28 List personList =parseXml();29 for(Person person : personList)30 {31 Log.i("XmlTest", person.toString());32 }33 }34 /**
35 * 写xml文件大本地36 */
37 public voidwriteLocal()38 {39 List 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 = newFileOutputStream(file);48 //设置文件的输出流
49 serializer.setOutput(fos, "UTF-8");50 serializer.startDocument("utf-8", true); //<?xml version
51 serializer.startTag(null, "persons"); //
52 for(Person person : personList)53 {54 serializer.startTag(null, "person"); //
55 serializer.attribute(null, "id", String.valueOf(person.getId()));56 serializer.startTag(null, "name"); //
57 serializer.text(person.getName()); //kite1
58 serializer.endTag(null, "name"); //
59 serializer.startTag(null, "age"); //
60 serializer.text(String.valueOf(person.getAge()));61 serializer.endTag(null, "age");//
62 serializer.endTag(null, "person"); //
63 }64 serializer.endTag(null, "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 * 获得personList77 *@return
78 */
79 public ListgetPersonList()80 {81 List personList = new ArrayList();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 returnpersonList;88 }89
90 public ListparseXml()91 {92
93 try
94 {95 //创建文件流对象
96 File file = new File("data/data/com.example.xmldemo", "persons.xml");97 FileInputStream fis = newFileInputStream(file);98 //获得pull 解析对象
99 XmlPullParser parser =Xml.newPullParser();100 //指定解析的文件和编码格式
101 parser.setInput(fis,"utf-8");102 int eventType = parser.getEventType(); //获得事件的类型103
104 //初始化集合
105 List personList = null;106 Person person = null;107 //如果不是最后的endDocument
108 while(eventType !=XmlPullParser.END_DOCUMENT)109 {110 String tagName =parser.getName();111 switch(eventType)112 {113 caseXmlPullParser.START_TAG:114 //如果是最开始的persons 根节点初始化
115 if("persons".equals(tagName))116 {117 personList = new ArrayList();118 } else if("person".equals(tagName))119 {120 //初始化person对象
121 person = newPerson();122
123 //获得id
124 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 caseXmlPullParser.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 returnpersonList;149 } catch(Exception e)150 {151 //TODO Auto-generated catch block
152 e.printStackTrace();153 }154 return null;155 }156
157 }