android第十二步Pull解析器解析和生成XML内容
重点关键字
InputStream xml = getClass().getClassLoader().getResourceAsStream("person.xml"); 获取包下文件
XmlPullParser parser = Xml.newPullParser(); 实例化pull
parser.setInput(xml, "UTF-8"); 设置读取位置
parser.getName()获取标签名称
parser.getAttributeValue(0)获取标签第一个属性值
parser.nextText()获取标签值
public static List<Person> getPersons(InputStream xml) throws Exception{ List<Person> persons = null; XmlPullParser pullParser= XmlPullParserFactory.newInstance().newPullParser(); //XmlPullParser pullParser=Xml.newPullParser(); pullParser.setInput(xml, "UTF-8");//为Pull解析器设置要解析的XML数据 int event = pullParser.getEventType(); Person person = null; 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(); //指针指向下一个节点 } //首先把XML数据读到char[]中然后开始解析,一个一个的字符往后读取,比对语法是否符合XML语法 return persons; } 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(); }
public class Person { @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } private Integer id; private String name; private Integer age; public Integer getId() {return id; } public void setId(Integer id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } public Integer getAge() {return age; } public void setAge(Integer age) {this.age = age; } public Person(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age; } public Person(){}}
public class PersonServiceTest extends AndroidTestCase { private static final String TAG= "PersonServiceTest"; public void testPersons() throws Exception{InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");List<Person> persons = PersonService.getPersons(xml);for(Person person : persons){Log.i(TAG, person.toString());} } public void testSaveXml() throws Exception{List<Person> persons = new ArrayList<Person>();persons.add(new Person(1,"zhangxx",80));persons.add(new Person(4,"zhlili",80));persons.add(new Person(8,"xiaoxiao",5));File xmlfile = new File(getContext().getFilesDir(),"zhao.xml");FileOutputStream outStream = new FileOutputStream(xmlfile);PersonService.save(persons, outStream);} }
转载于:https://www.cnblogs.com/zyldream/p/3598801.html
android第十二步Pull解析器解析和生成XML内容相关推荐
- java sax解析xml_在Java中使用DOM,SAX和StAX解析器解析XML
java sax解析xml 我碰巧通读了有关Java中XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以得到该代码的参考以及任何阅读此代码的 ...
- 在Java中使用DOM,SAX和StAX解析器解析XML
我碰巧通读了有关Java中的XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以参考该代码以及任何阅读此书的参考. 在本文中,我将在不同的解析 ...
- Android学习笔记---15_采用Pull解析器解析和生成XML内容
15_采用Pull解析器解析和生成XML内容 -------------------------------------- 使用SAX或者DOM或者pull解析XML文件 -------------- ...
- Android Studio(十二):打包多个发布渠道的apk文件
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- 十二步解N-S方程之第四步
2019独角兽企业重金招聘Python工程师标准>>> 十二步解N-S方程之第四步 通过前面的学习,我们已经知道如何去解线性和非线性的一维对流方程,而且也知道CFL是如何影响数值求解 ...
- jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题
最近被问到过几次关于springmvc多视图解析器解析的问题:总结一下. 1.问题: 假设我有两个jsp: WEB-INF/html/a.jsp WEB-INF/report/b.jsp 且我配置了视 ...
- spring MVC使用自定义的参数解析器解析参数
目录 写在前面 编写自定义的参数解析器解析请求参数 项目结构 定义注解 实体类 controller 定义参数解析器 注册参数解析器 启动项目 发起请求查看结果 写在前面 如果还有小伙伴不知道spri ...
- java xml stax_Java StAX解析器示例以读取XML文件
java xml stax We can use Java StAX parser to read XML file. Java Streaming API for XML (Java StAX) p ...
- Android开发笔记(六十二)HTTP数据格式的解析
json解析 android有两种主流的json解析方案,一种是sdk自带的由Google提供的json(包名前缀为org.json),另一种是Alibaba提供的第三方jar包fastjson(包名 ...
- 用PULL解析器解析XML文件
第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...
最新文章
- 3大主流NoSQL数据库性能对比测试报告
- history linux 日志服务器_Linux日志分析
- 【模型解读】深度学习网络之Siamese Network网络
- python中使用中文字符,文件首行添加# -*- coding: utf-8 -*-后仍然报错(unicode error) ‘utf-8‘ codec can‘t decode byte 0xc4
- 火山引擎视频云:坚持基础技术创新,打造极致用户体验
- 二分法分页 mysql_LeetCode 04寻找两个正序数组的中位数(困难)二分法
- python 二次平滑_时序分析 指数平滑
- linux上php指向mysql_linux环境下 php如何配置mysql
- android 拨打电话 发送短信 权限,Android开发实现拨打电话与发送信息的方法分析...
- 基于 HTML5 的 3D 工业互联网展示方案
- caxa线切割怎样画链轮_caxa线切割【图文详解】
- OMNeT 例程 Tictoc1-5 总结
- Latex --- 加三级子标题,解决没有编号问题(已解决)(加头文件即可)
- 如何完全卸载删除Parallels Desktop Mac教程
- Springboot美妆网站的设计与实现毕业设计-附源码211539
- 关于单边账的解释及解决
- STM32系列 STM32F4xx SPI Flash-读写操作
- 2023年1月伊凡梳理如何快速安装git并且配置本地gitee账号权限方便拉代码
- 水果酒技术-山楂酒怎么做,山楂酒有几种制作方法
- UFI模式下GPT分区安装win8
热门文章
- LinkedHashMap随笔
- 覆盖Dispatch响应消息
- java 序列化 学习
- ES+Redis+MySQL,这个高可用架构设计太顶了!
- Git 不要只会 pull 和 push,试试这 5 条提高效率的命令
- Docker 架构原理剖析,万字详解!
- 2019 最新计算机技能排名出炉:Python 排第三,第一名是...
- 蚂蚁金服OceanBase“击败”甲骨文?呵呵!
- 计算机专业的需要考研么?
- socket怎么同时监听两个端口_三十岁了,我同时爱上两个男人,我现在不知道怎么办...