Android使用Pull解析和生成XML文件
来源:互联网 发布:大数据就业 知乎 编辑:程序博客网 时间:2024/05/18 12:44
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); }
0 0
- Android使用PULL解析和生成XML文件
- Android使用Pull解析和生成XML文件
- Android使用Pull生成/解析XML文件
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android中使用Pull解析器生成XML文件和读取xml文件
- 使用pull解析xml和生成xml文件
- 使用Pull解析器生成和解析XML文件
- 使用pull解析器解析和生成xml文件
- Android使用pull解析器解析和生成xml
- android使用pull解析器来解析和生成xml文件
- 在android中使用Pull解析器生成xml文件
- android基础--使用Pull解析器生成XML文件
- android(15)_使用Pull解析器生成XML文件
- Android笔记使用Pull解析器生成XML文件
- android利用pull技术来解析和生成xml文件
- Android开发之Pull解析读取和生成XML文件
- Android开发之使用PULL解析和生成XML
- GitHub入门教程(四)- 取得项目的 Git 仓库 之 从服务器端克隆
- ubuntu自带VI编辑器不好用的解决办法
- SQL SERVER中char、nchar、varchar、nvarchar的区别和常用场景举例
- Android push
- java管道流PipedStream
- Android使用Pull解析和生成XML文件
- 页面置换算法
- JQuery视频总结
- matlab练习程序 ----- HOG
- 安装VIM中文帮助文档
- MATLAB——rand 与 randn 'twister'、'state'、'seed'
- android几个常用对话框的弹出
- 弄懂AVL树与红黑树
- 使用Fragment作为Item的ViewPager不更新问题.