Android使用Pull解析和生成XML文件
2014-09-18 21:53
531 查看
Android使用Pull解析和生成XML文件
除了可以使用SAX和DOM解析XML文件之外,还可以使用Android内置的pull解析器解析xml文件。采用事件驱动,返回相应的数值代码。
一、首先是Pull解析xml文件
1. 以解析该xml文件为例:
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>大明</name> <age>30</age> </person> <person id="20"> <name>小明</name> <age>25</age> </person> </persons>
2.新建JavaBean,用于存放xml文件中的person数据:
public class Person { private int id; private String name; private short age; public Person() { super(); } public Person(int id, String name, short age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public short getAge() { return age; } public void setAge(short age) { this.age = age; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
3.新建业务操作类:
public class PULLPersonService { public static List<Person> getPersons(InputStream inputStream) throws Exception { List<Person> persons = null; Person person = null; XmlPullParser parser = Xml.newPullParser(); parser.setInput(inputStream, "UTF-8"); int eventType = parser.getEventType(); //返回第一个事件数值代码 while(eventType != XmlPullParser.END_DOCUMENT) { switch(eventType) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: String name = parser.getName(); if("person".equals(name)) { person = new Person(); person.setId(new Integer(parser.getAttributeValue(0))); } if(person != null) { if("name".equals(name)) { person.setName(parser.nextText()); } else if("age".equals(name)) { person.setAge(new Short(parser.nextText())); } } break; case XmlPullParser.END_TAG: if("person".equals(parser.getName())) { persons.add(person); person = null; } break; default: break; } eventType = parser.next(); } return persons; } }
4.新建单元测试类:
public class PersonServiceTest extends AndroidTestCase { public void testPULLGetPersons() throws Exception { InputStream inputStream = getClass().getClassLoader().getResourceAsStream("test.xml"); List<Person> persons = PULLPersonService.getPersons(inputStream); for(Person person : persons) { Log.i("PULL", person.toString()); } } }
二、其次是Pull生成xml文件
1. 使用OutputStream生成xml文件:
public static void save(List<Person> persons, OutputStream outputStream) throws Exception { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(outputStream, "UTF-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "persons"); for(Person person : persons) { serializer.startTag(null, "person"); serializer.attribute(null, "id", String.valueOf(person.getId())); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(String.valueOf(person.getAge())); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); outputStream.flush(); outputStream.close(); }
2.新建单元测试方法:
public void testSave() throws Exception { List<Person> persons = new ArrayList<Person>(); persons.add(new Person(001, "haha", (short)12)); persons.add(new Person(002, "你好", (short)23)); persons.add(new Person(003, "欧巴", (short)34)); File file = new File(this.getContext().getFilesDir(), "person.xml"); FileOutputStream outputStream = new FileOutputStream(file); PULLPersonService.save(persons, outputStream); }
3. 使用Writer生成xml文件:
public static void save(List<Person> persons, Writer writer) throws Exception { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(writer); serializer.startDocument("UTF-8", true); serializer.startTag(null, "persons"); for(Person person : persons) { serializer.startTag(null, "person"); serializer.attribute(null, "id", String.valueOf(person.getId())); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(String.valueOf(person.getAge())); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); writer.flush(); writer.close(); }
4.新建单元测试方法:
public void testSave() throws Exception { List<Person> persons = new ArrayList<Person>(); persons.add(new Person(001, "haha", (short)12)); persons.add(new Person(002, "你好", (short)23)); persons.add(new Person(003, "欧巴", (short)34)); File file = new File(this.getContext().getFilesDir(), "ppp.xml"); FileOutputStream outputStream = new FileOutputStream(file); OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8"); BufferedWriter bwriter = new BufferedWriter(writer);//缓存 PULLPersonService.save(persons, bwriter); }
相关文章推荐
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android使用Pull生成/解析XML文件
- 文件androidAndroid使用PULL解析和生成XML文件
- android中使用pull方式解析sdcard中的xml文件实例
- android——使用pull解析xml文件
- Android开发学习---使用XmlPullParser解析xml文件
- Android 中使用Pull解析XML文件
- Android中使用PULL方式解析XML文件
- android 使用pull方式解析xml文件
- android使用XmlPullParser来解析XML文件
- Android程序解析XML文件的方法及使用PULL解析XML案例
- Android演示使用PULL方式解析XML文件
- Android开发进阶(六)--原始XML文件的使用以及PULL解析小例
- Android中使用PULL方式解析XML文件
- 在Android应用中使用Pull解析XML文件(传智播客视频笔记)
- Java乔晓松-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件
- Android中使用PULL方式解析XML文件
- Android中pull解析XML文件的简单使用
- android使用XmlPullParser来解析XML文件