XmlPullParser
时间:2022-04-24
本文章向大家介绍XmlPullParser,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
XmlPullParser
public class PersonService {
/**
* 接收一个包含XML文件的输入流, 解析出XML中的Person对象, 装入一个List返回
* @param in 包含XML数据的输入流
* @return 包含Person对象的List集合
*/
public List<Person> getPersons(InputStream in) throws Exception {
//1.获取xml文件
InputStream is = PersonService.class.getClassLoader().getResourceAsStream();
//2.获取解析器(Android中提供了方便的方法就是使用Android中的工具类Xml)
XmlPullParser parser = Xml.newPullParser();
//3.解析器解析xml文件
parser.setInput(in, "UTF-8");
List<Person> persons = new ArrayList<Person>();
Person p = null;
//4.循环解析
for (int type = parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next()) { // 循环解析
if (type == XmlPullParser.START_TAG) { // 判断如果遇到开始标签事件
if ("person".equals(parser.getName())) { // 标签名为person
p = new Person(); // 创建Person对象
String id = parser.getAttributeValue(0); // 获取属性
p.setId(Integer.parseInt(id)); // 设置ID
persons.add(p); // 把Person对象装入集合
} else if ("name".equals(parser.getName())) { // 标签名为name
String name = parser.nextText(); // 获取下一个文本
p.setName(name); // 设置name
} else if ("age".equals(parser.getName())) { // 标签名为age
String age = parser.nextText(); // 获取下一个文本
p.setAge(Integer.parseInt(age)); // 设置age
}
}
}
return persons;
}
/**
*将数据写入到Xml文件中.
*@param out 输出到要被写入数据的Xml文件的输出流//就相当于 OutputStream os = new FileOutputStream("a.xml");
*/
public void writePersons(List<Book> Books, OutputStream out) throws Exception {
//1.获得XmlSerializer(Xml序列化工具)(通过Android中的工具类Xml得到)
XmlSerializer serializer = Xml.newSerializer();
//2.设置输出流(明确要将数据写入那个xml文件中)
serializer.setOutput(out, "UTF-8");
//3.写入开始文档
serializer.startDocument("UTF-8", true);
//4.开始标签
serializer.startTag(null, "bookstore");
//5.循环遍历
for (Book p : books) {
//6.开始标签
serializer.startTag(null, "book");
//7.给这个标签设置属性
serializer.attribute(null, "id", book.getId().toString());
//8.子标签
serializer.startTag(null, "name");
//9.设置子标签的内容
serializer.text(book.getName());
//10.子标签结束
serializer.endTag(null, "name");
//11.标签结束
serializer.endTag(null, "person");
}
//12.根标签结束
serializer.endTag(null, "persons");
//13.文档结束
serializer.endDocument();
}
}
- [快学Python3]HTTP处理 - urllib模块
- Vijos P1786 质因数分解【暴力】
- 模仿百度新闻列表底部的“加载更多”
- Vijos P1035 贪婪的送礼者【模拟】
- Vijos P1114 FBI树【DFS模拟,二叉树入门】
- Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
- 撞库扫号防范
- 分享一个 HTTPS A+ 的 nginx 配置
- Vijos P1785 同学排序【模拟】
- Vijos P1784 数字统计【模拟】
- 网络安全黑暗森林法则:2015 ISC 深度回顾
- Codeforces 626G Raffles(贪心+线段树)
- window.opener.location 安全风险讨论
- Vijos P1497 立体图【模拟】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Guava 中的 Stopwatch 是个什么鬼?
- Mybatis接口Mapper内的方法为啥不能重载?
- 基于K-Means聚类算法的主颜色提取
- 扩展之Tensorflow2.0 | 21 Keras的API详解(下)池化、Normalization层
- 一个真实问题,搞定三个冷门pandas函数
- conda管理C源代码程序的时候总是出现库文件冲突或者缺失
- 如何获取非模式生物KEGG PATHWAY的基因集并用clusterProfile做GSEA?
- 通过视频着色进行自监督跟踪
- Python爬虫:一些常用的爬虫技巧总结
- 带你用 Python 实现自动化群控(入门篇)
- Chrome终于上线这项重磅功能,中国用户苦等多年!
- YOLO 算法最全综述:从 YOLOv1 到 YOLOv5
- 《JavaScript ES6 函数式编程入门经典》读书笔记
- Java9-Reactive Stream API响应式编程
- mybatis-plus增删改查以及前后端分离模式下的项目应用