pull解析xml文件
2024-10-18 00:32:57
pull解析xml文件
- 先自己写一个xml文件,存一些天气信息
拿到xml文件
InputStream is = getClassLoader().getResourceAsStream("weather.xml");
拿到pull解析器
XmlPullParser xp = Xml.newPullParser();
开始解析
拿到指针所在当前节点的事件类型
int type = xp.getEventType();
事件类型主要有五种
- START_DOCUMENT:xml头的事件类型
- END_DOCUMENT:xml尾的事件类型
- START_TAG:开始节点的事件类型
- END_TAG:结束节点的事件类型
- TEXT:文本节点的事件类型
如果获取到的事件类型不是END_DOCUMENT,就说明解析还没有完成,如果是,解析完成,while循环结束
while(type != XmlPullParser.END_DOCUMENT)
当我们解析到不同节点时,需要进行不同的操作,所以判断一下当前节点的name
- 当解析到weather的开始节点时,new出list
- 当解析到city的开始节点时,创建city对象,创建对象是为了更方便的保存即将解析到的文本
当解析到name开始节点时,获取下一个节点的文本内容,temp、pm也是一样
case XmlPullParser.START_TAG:
//获取当前节点的名字
if("weather".equals(xp.getName())){
citys = new ArrayList<City>();
}
else if("city".equals(xp.getName())){
city = new City();
}
else if("name".equals(xp.getName())){
//获取当前节点的下一个节点的文本
String name = xp.nextText();
city.setName(name);
}
else if("temp".equals(xp.getName())){
String temp = xp.nextText();
city.setTemp(temp);
}
else if("pm".equals(xp.getName())){
String pm = xp.nextText();
city.setPm(pm);
}
break;
当解析到city的结束节点时,说明city的三个子节点已经全部解析完了,把city对象添加至list
case XmlPullParser.END_TAG:
if("city".equals(xp.getName())){
citys.add(city);
}
//获取到src文件夹下的资源文件
InputStream is = getClassLoader().getResourceAsStream("weather.xml"); //拿到pull解析器对象
XmlPullParser xp = Xml.newPullParser();
//初始化
try {
xp.setInput(is, "gbk"); //获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作
int type = xp.getEventType();
City city = null;
while(type != XmlPullParser.END_DOCUMENT){
//根据节点的类型,要做不同的操作
switch (type) {
case XmlPullParser.START_TAG:
// 获取当前节点的名字
if("weather".equals(xp.getName())){
//创建city集合对象,用于存放city的javabean
cityList = new ArrayList<City>();
}
else if("city".equals(xp.getName())){
//创建city的javabean对象
city = new City();
}
else if("name".equals(xp.getName())){
// 获取当前节点的下一个节点的文本
String name = xp.nextText();
city.setName(name);
}
else if("temp".equals(xp.getName())){
// 获取当前节点的下一个节点的文本
String temp = xp.nextText();
city.setTemp(temp);
}
else if("pm".equals(xp.getName())){
// 获取当前节点的下一个节点的文本
String pm = xp.nextText();
city.setPm(pm);
}
break;
case XmlPullParser.END_TAG:
if("city".equals(xp.getName())){
//把city的javabean放入集合中
cityList.add(city);
}
break; } //把指针移动到下一个节点,并返回该节点的事件类型
type = xp.next();
} for (City c : cityList) {
System.out.println(c.toString());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最新文章
- Android基础之Activity四种启动模式
- Javascript字数统计
- Android Sudoku应用挂掉的问题
- 异常处理——毕向东Java基础教程学习笔记
- A380上11万一张的机票什么享受?来看看
- LeetCode 125. Valid Palindrome
- MySQL存储过程、函数和游标
- Java 基础之认识 Annotation
- mysql基础(mysql数据库导入到处) 很基础很实用
- leetcode[87] Partition List
- ArcGis SOE(server object extensions)之REST Template初体验
- Nagios 监控系统架构
- 2018-2019-2 20165313 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
- 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
- SpringCloud入门之Spring Boot多环境配置切换指南
- 002_性能测试工具wrk安装与使用
- VS Code打造一个完美的Springboot开发环境
- iOS自动布局——Masonry详解
- vulcanjs 开源工具方便快速开发react graphql meteor 应用
- mybatis支持的jdbc类型
热门文章
- 用jQuery 处理XML-- jQuery与XML
- (转载)SQL Server 2005 日志文件过大处理
- golang安装卸载 linux+windows+raspberryPI 平台
- oracle创建临时表
- 洛谷P1126 机器人搬重物
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程05:技能读表》
- 【Kafka入门】Kafka入门第一篇:基础概念篇
- 【Java基础】继承的一些总结
- MVC client validation after PartialView loaded via Ajax MVC3中 弹出 Dialog时候 提交的时候 使用 Jquery 不验证 form表单 的解决办法
- 成都Uber优步司机奖励政策(2月21日)