Android中使用Pull解析器读取XML文件
2015-12-09 09:48
405 查看
Android中内置的Pull解析器,因此可以使用Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。
直接贴出解析和读取代码:
直接贴出解析和读取代码:
package com.cyh.service; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.cyh.domain.Person; public class PersonService { /** * 解析XML Pull破解器方法 * @param xml * @return * @throws Exception */ public static List<Person> getPersons(InputStream xml) throws Exception{ List<Person> persons = null; Person person = null; // XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); XmlPullParser parser = Xml.newPullParser(); //为Pull破解器设置要解析的XML parser.setInput(xml, "UTF-8"); int event = parser.getEventType(); while(event != XmlPullParser.END_DOCUMENT){ switch (event){ case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if("person".equals(parser.getName())){ person = new Person(); int id = Integer.parseInt(parser.getAttributeValue(0)); person.setId(id); } if("name".equals(parser.getName())){ String name = parser.nextText(); person.setName(name); } if("age".equals(parser.getName())){ int age = Integer.parseInt(parser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(parser.getName())){ persons.add(person); person = null; } break; } event = parser.next(); } return persons; } /** * 保存数据到XML文件中 * @param list * @param out * @throws Exception */ public static void save(List<Person> list, OutputStream out) throws Exception{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out, "UTF-8"); serializer.startDocument("UTF-8", true);//文档开始 serializer.startTag(null, "persons"); for(Person p:list){ 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();//文档结束 out.flush(); out.close(); } }
相关文章推荐
- Android中使用Junit测试框架
- Android中使用SharedPreferences进行数据存储及文件操作模式
- android listview/ScrollView 去除顶部下拉时的半月形阴影和上下滑动顶部和底部的虚化
- Android简单短信发送示例
- 数据绑定数据库详解Android Data Binding Library
- Android与JavaScript之间的相互调用
- Ant之Project
- Android SDK目录结构及作用
- android 6.0 adb 编译
- Android开发调节屏幕亮度
- Android中如何提取和生成mp4文件
- Android开源项目
- Android开发环境搭建
- Android 获取手机的IMEI等设备信息
- android studio中如何获取sha1 码 和签名
- Android 中的 Service 全面总结
- Android ToggleButton 实践
- Android ToggleButton 实践
- android学习一些帖子
- Android的EditText属性