Android下使用pull解析器生成XML文件、读取XML文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android下使用pull解析器生成XML文件、读取XML文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3417字,纯文字阅读大概需要5分钟。
内容图文
Android下使用Pull解析器 1,Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素事件。 2,使用parser.next()可以进入下一个元素并触发相应事件。 3,事件将作为一个int数值被发送,因此可以使用一个switch对相应的事件进行处理。 4,当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。 5,相关API: 获得当前节点事件类型:parser.getEventType(); 获得下一节点事件类型:parser.next(); 获得标签属性值: parser.getAttributeValue(); 获得标签后面文本内容:parser.nextText(); 例子: <?xml version="1.0" encoding="UTF-8"?> <persons> <person id=“18"> <name>allen</name> <age>36</age> </person> <person id=“28"> <name>james</name> <age>25</age> </person> </persons> // 使用Pull解析器生成XML文件,并写到本地 private void writeXmlToLocal() { List<Person> personList = getPersonList(); // 获得序列化对象 XmlSerializer serializer = Xml.newSerializer(); // XmlSerializer serializer = XmlPullParserFactory.newInstance().newSerializer(); try { File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); FileOutputStream fos = new FileOutputStream(path); // 指定序列化对象输出的位置和编码 serializer.setOutput(fos, "utf-8"); // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?> serializer.startDocument("utf-8", true); serializer.startTag(null, "persons"); // <persons> for (Person person : personList) { // 开始写person serializer.startTag(null, "person"); // <person> serializer.attribute(null, "id", String.valueOf(person.getId())); // 写person的name serializer.startTag(null, "name"); // <name> serializer.text(person.getName()); serializer.endTag(null, "name"); // </name> // 写person的age serializer.startTag(null, "age"); // <age> serializer.text(String.valueOf(person.getAge())); serializer.endTag(null, "age"); // </age> serializer.endTag(null, "person"); // </person> } serializer.endTag(null, "persons"); // </persons> serializer.endDocument(); // 结束 } catch (Exception e) { e.printStackTrace(); } } // 使用Pull解析器读取本地的XML文件 private List<Person> parserXmlFromLocal() { try { File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); FileInputStream fis = new FileInputStream(path); // 获得pull解析器对象 XmlPullParser parser = Xml.newPullParser(); // XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); // 指定解析的文件和编码格式 parser.setInput(fis, "utf-8"); // 获得事件类型 int eventType = parser.getEventType(); List<Person> personList = null; Person person = null; String id; while(eventType != XmlPullParser.END_DOCUMENT) { // 获得当前节点的名称 String tagName = parser.getName(); switch (eventType) { case XmlPullParser.START_TAG: // 当前等于开始节点 <person> if("persons".equals(tagName)) { // <persons> personList = new ArrayList<Person>(); } else if("person".equals(tagName)) { // <person id="1"> person = new Person(); id = parser.getAttributeValue(null, "id"); person.setId(Integer.valueOf(id)); } else if("name".equals(tagName)) { // <name> person.setName(parser.nextText()); } else if("age".equals(tagName)) { // <age> person.setAge(Integer.parseInt(parser.nextText())); } break; case XmlPullParser.END_TAG: // </persons> if("person".equals(tagName)) { // 需要把上面设置好值的person对象添加到集合中 personList.add(person); } break; default: break; } // 获得下一个事件类型 eventType = parser.next(); } return personList; } catch (Exception e) { e.printStackTrace(); } return null; } }
原文:http://blog.csdn.net/wodewutai17quiet/article/details/46419981
内容总结
以上是互联网集市为您收集整理的Android下使用pull解析器生成XML文件、读取XML文件全部内容,希望文章能够帮你解决Android下使用pull解析器生成XML文件、读取XML文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。