Android数据存储---Pull解析Xml文件
2013-11-14 21:59
666 查看
有如下xml文件:
1.使用XmlPullParser读取xml文件:
2.使用XmlPullParser保存数据到xml文件
3.Test类
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <persons> <person id="1"> <name>范冰冰</name> <age>31</age> </person> <person id="2"> <name>林志玲</name> <age>38</age> </person> <person id="3"> <name>杨幂</name> <age>26</age> </person> </persons>
1.使用XmlPullParser读取xml文件:
public List<Person> loadPersons(InputStream in) throws Exception { XmlPullParser parser = Xml.newPullParser(); // 获取解析器 parser.setInput(in, "UTF-8"); // 设置输入流, 指定码表 ArrayList<Person> persons = new ArrayList<Person>(); Person p = null; // 最初type赋值为第一个事件, 只要不是文档结束就循环, 每次循环后解析下一个事件 for (int type = parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next()) { if (type == XmlPullParser.START_TAG) { // 如果遇到了标签开始事件 if (parser.getName().equals("person")) { // 如果标签名为"person" p = new Person(); // 创建对象 String id = parser.getAttributeValue(0); // 获取第一个属性的属性值 p.setId(Integer.parseInt(id)); // 转为int, 设置id persons.add(p); // 装入集合 } else if (parser.getName().equals("name")) { // 如果标签名为"name" String name = parser.nextText(); // 获取下一个文本 p.setName(name); // 设置name } else if (parser.getName().equals("age")) { // 如果标签名为"age" String age = parser.nextText(); // 获取下一个文本 p.setAge(Integer.parseInt(age)); // 设置age } } } return persons; }
2.使用XmlPullParser保存数据到xml文件
public void savePersons(List<Person> persons, OutputStream out) throws IOException { XmlSerializer serializer = Xml.newSerializer(); // 获取序列化工具 serializer.setOutput(out, "UTF-8"); // 设置输出流, 指定码表 //Standalone属性是可选项,表示xml文档是否需要引用其他文件。取值为yes表示不引用,no表示引用,缺省值为no serializer.startDocument("UTF-8", true); // 开始文档,设置编码方式 和 Standalone值 serializer.startTag(null, "persons"); // 开始标签 for (Person p : persons) { serializer.startTag(null, "person"); serializer.attribute(null, "id", p.getId().toString()); // 设置属性 serializer.startTag(null, "name"); serializer.text(p.getName()); // 设置文本 serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(p.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); // 结束标签 serializer.endDocument(); // 结束文档 }
3.Test类
public class PersonTest extends AndroidTestCase { public void testLoad() throws Exception { PersonService service = new PersonService(); //读取xml文件,person.xml在src目录下 InputStream in = PersonTest.class.getClassLoader().getResourceAsStream("persons.xml"); List<Person> persons = service.loadPersons(in); for (Person p : persons) System.out.println(p); //保存数据到xml文件中 Person p = new Person(4, "张红", 18); persons.add(p); service.savePersons(persons, new FileOutputStream("/mnt/sdcard/persons.xml")); } }
相关文章推荐
- Android数据存储---Pull解析Xml文件
- Android数据存储——2.文件存储_E_Pull解析XML文档
- Android数据存储——2.文件存储_E_Pull解析XML文档
- android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库
- Android中的数据存储之文件存储、SharedPreferences和Pull解析
- Android数据存储——2.文件存储_C_DOM解析XML文档
- Android数据存储之XmlPull解析XML文件(输出部分)
- Android数据存储——2.文件存储_C_DOM解析XML文档
- Android中使用xml保存数据(xml文件序列化)及使用pull解析xml文件
- Android笔记(四十六) Android中的数据存储——XML(二)PULL解析
- Android数据存储之DOM解析XML文件(输出部分)
- Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML
- Android数据存储之XmlPull解析XML文件(读取部分)
- android 用pull解析xml文件
- Android下Xml解析技术(三)、pull解析Xml文件
- Android中解析XML文件并传输数据
- ANDROID基础学习笔记_4.1_采用pull解析xml文件
- Android下Xml解析技术(2)之PULL解析Xml文件
- android开发笔记之PULL解析xml文件
- android之xml数据解析(Pull)