您的位置:首页 > 移动开发 > Android开发

android 通过pull解析xml文件

2016-04-21 00:00 477 查看




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             //如果不是最后的endDocument
108             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                             //获得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                 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 block
152  e.printStackTrace(); 153  } 154         return null; 155  } 156
157 }


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: