重点关键字

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内容相关推荐

  1. java sax解析xml_在Java中使用DOM,SAX和StAX解析器解析XML

    java sax解析xml 我碰巧通读了有关Java中XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以得到该代码的参考以及任何阅读此代码的 ...

  2. 在Java中使用DOM,SAX和StAX解析器解析XML

    我碰巧通读了有关Java中的XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以参考该代码以及任何阅读此书的参考. 在本文中,我将在不同的解析 ...

  3. Android学习笔记---15_采用Pull解析器解析和生成XML内容

    15_采用Pull解析器解析和生成XML内容 -------------------------------------- 使用SAX或者DOM或者pull解析XML文件 -------------- ...

  4. Android Studio(十二):打包多个发布渠道的apk文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  5. 十二步解N-S方程之第四步

    2019独角兽企业重金招聘Python工程师标准>>> 十二步解N-S方程之第四步 通过前面的学习,我们已经知道如何去解线性和非线性的一维对流方程,而且也知道CFL是如何影响数值求解 ...

  6. jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题

    最近被问到过几次关于springmvc多视图解析器解析的问题:总结一下. 1.问题: 假设我有两个jsp: WEB-INF/html/a.jsp WEB-INF/report/b.jsp 且我配置了视 ...

  7. spring MVC使用自定义的参数解析器解析参数

    目录 写在前面 编写自定义的参数解析器解析请求参数 项目结构 定义注解 实体类 controller 定义参数解析器 注册参数解析器 启动项目 发起请求查看结果 写在前面 如果还有小伙伴不知道spri ...

  8. 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 ...

  9. Android开发笔记(六十二)HTTP数据格式的解析

    json解析 android有两种主流的json解析方案,一种是sdk自带的由Google提供的json(包名前缀为org.json),另一种是Alibaba提供的第三方jar包fastjson(包名 ...

  10. 用PULL解析器解析XML文件

    第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...

最新文章

  1. 3大主流NoSQL数据库性能对比测试报告
  2. history linux 日志服务器_Linux日志分析
  3. 【模型解读】深度学习网络之Siamese Network网络
  4. python中使用中文字符,文件首行添加# -*- coding: utf-8 -*-后仍然报错(unicode error) ‘utf-8‘ codec can‘t decode byte 0xc4
  5. 火山引擎视频云:坚持基础技术创新,打造极致用户体验
  6. 二分法分页 mysql_LeetCode 04寻找两个正序数组的中位数(困难)二分法
  7. python 二次平滑_时序分析 指数平滑
  8. linux上php指向mysql_linux环境下 php如何配置mysql
  9. android 拨打电话 发送短信 权限,Android开发实现拨打电话与发送信息的方法分析...
  10. 基于 HTML5 的 3D 工业互联网展示方案
  11. caxa线切割怎样画链轮_caxa线切割【图文详解】
  12. OMNeT 例程 Tictoc1-5 总结
  13. Latex --- 加三级子标题,解决没有编号问题(已解决)(加头文件即可)
  14. 如何完全卸载删除Parallels Desktop Mac教程
  15. Springboot美妆网站的设计与实现毕业设计-附源码211539
  16. 关于单边账的解释及解决
  17. STM32系列 STM32F4xx SPI Flash-读写操作
  18. 2023年1月伊凡梳理如何快速安装git并且配置本地gitee账号权限方便拉代码
  19. 水果酒技术-山楂酒怎么做,山楂酒有几种制作方法
  20. UFI模式下GPT分区安装win8

热门文章

  1. LinkedHashMap随笔
  2. 覆盖Dispatch响应消息
  3. java 序列化 学习
  4. ES+Redis+MySQL,这个高可用架构设计太顶了!
  5. Git 不要只会 pull 和 push,试试这 5 条提高效率的命令
  6. Docker 架构原理剖析,万字详解!
  7. 2019 最新计算机技能排名出炉:Python 排第三,第一名是...
  8. 蚂蚁金服OceanBase“击败”甲骨文?呵呵!
  9. 计算机专业的需要考研么?
  10. socket怎么同时监听两个端口_三十岁了,我同时爱上两个男人,我现在不知道怎么办...