Android_15_pull解析Xml文件
2015-06-22 15:03
597 查看
在Android平台上可以使用Sax、Dom、和pull解析Xml文件。
pull破解器已经集成在Android操作系统中,无需添加任何jar文件。
pull解析器的源码及文档下载网址:http://xmlpull.org/xmlpull-website/impls.shtml
解析原理:
首先将数据读取到一个字符数组中。char[] = {"数据"};
开始解析,一个一个字符读取。读到>后判断这段语句是满足xml哪一个语法。
触发该语法对应的事件。
xml语法:
文件头
文件尾
元素节点头
元素节点尾
xml文件读取源码:
xml文件代码
读取xml文件方法:
用List集合存取,存取元素为Person类。
采用面向对象的方式存储xml文件:
使用Pull解析器存储文件
pull破解器已经集成在Android操作系统中,无需添加任何jar文件。
pull解析器的源码及文档下载网址:http://xmlpull.org/xmlpull-website/impls.shtml
解析原理:
首先将数据读取到一个字符数组中。char[] = {"数据"};
开始解析,一个一个字符读取。读到>后判断这段语句是满足xml哪一个语法。
触发该语法对应的事件。
xml语法:
文件头
文件尾
元素节点头
元素节点尾
xml文件读取源码:
xml文件代码
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>oyy</name> <age>25</age> </person> <person id="20"> <name>wjm</name> <age>20</age> </person> </persons>
读取xml文件方法:
用List集合存取,存取元素为Person类。
public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; Person person = null; // 使用pull解析器 获得pull解析器对象 // XmlPullParser pullParser = // XmlPullParserFactory.newInstance().newPullParser(); XmlPullParser pullParser = Xml.newPullParser(); // 为pull解析器设置要解析的Xml数据 pullParser.setInput(xml, "UTF-8"); int event = pullParser.getEventType();// 读取事件 while (event != XmlPullParser.END_DOCUMENT) { // 判断是什么事件 switch (event) { case XmlPullParser.START_DOCUMENT: // 初始化 persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if ("person".equals(pullParser.getName())) { int id = new Integer(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if ("name".equals(pullParser.getName())) { String name = pullParser.nextText(); person.setName(name); } if ("age".equals(pullParser.getName())) { int age = new Integer(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if ("person".equals(pullParser.getName())) { persons.add(person); person = null; } break; } event = pullParser.next();// 读到开始语句后 继续解析 } return persons; }
采用面向对象的方式存储xml文件:
使用Pull解析器存储文件
/** * 保持数据到XML文件中 * @param persons 数据 * @param out 输出方向 * @throws Exception */ public static void save(List<Person> persons,OutputStream out) throws Exception{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out,"UTF-8"); serializer.startDocument("UTF-8", true);//开始文档 serializer.startTag(null, "persons");//元素开始节点 for(Person person : persons){ serializer.startTag(null, "person"); serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons");//元素结束节点 serializer.endDocument();//结束文档 out.flush(); out.close(); }
相关文章推荐
- android activity切换动画
- android目录结构
- Android Screen Monitor
- java4Android(12)java中的异常(13)自定义异常,异常处理的两种方式
- android动画的Interpolator
- android 百度云推送
- 第四章:Android之本地数据库使用所要考虑的技术
- Android之ListView设置
- android学习笔记三 ---- android项目文件结构介绍
- Android JNI之——UnsatisfiedLinkError errordlopen failed: cannot locate symbol "rand"
- Android:解决ExpandableListView中添加button后item项点击事件问题
- android学习笔记二 ---- adb常用指令
- Android实机调试出现“您的手机未安装此应用”
- android应用程序的安装方式与原理
- GSON 学习
- 初探android的Camera和Matrix
- Android学习笔记之—采用Pull解析XML文件
- Android学习【AutoCompleteTextView】
- 安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
- Android学习笔记之—XML文件的序列化