xml文件解析(使用解析器)
一.Xml解析,解析xml并封装到list中的javabean中
OM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理
1.获取xml解析器
XmlPullParser xpp = Xml.newPullParser();
2.设置解析器参数
xpp.setInput(in, "utf-8");//in为输入流
3.获取事件类型
int type = xpp.getEventType();
4.不断向下解析,一行一行解析
while(type != XmlPullParser.END_DOCUMENT){switch(type){case XmlPullParser.START_TAG://解析开始标签//具体判断是哪个开始标签if("weather".equals(xpp.getName())){weatherlist = new ArrayList<Channel>();}else if("channel".equals(xpp.getName())){ch = new Channel();String id = xpp.getAttributeValue(0);ch.setId(id);}else if("city".equals(xpp.getName())){String city = xpp.nextText();ch.setCity(city);}else if("temp".equals(xpp.getName())){String temp = xpp.nextText();ch.setTemp(temp);}else if("wind".equals(xpp.getName())){String wind = xpp.nextText();ch.setWind(wind);}else if("pm2.5".equals(xpp.getName())){String pm250 = xpp.nextText();ch.setPm250(pm250);}break;case XmlPullParser.END_TAG://解析结束标签//判断要解析的结束标签if("channel".equals(xpp.getName())){//把ch对象添加到集合weatherlist.add(ch);}break; }type = xpp.next();}
5.对应的要解析的文件:
<?xml version="1.0" encoding="utf-8"?>
<weather><channel id="1"><city>北京</city><temp>16℃</temp><wind>4</wind><pm2.5>300</pm2.5></channel><channel id="2"><city>上海</city><temp>20℃</temp><wind>5</wind><pm2.5>200</pm2.5></channel><channel id="3"><city>广州</city><temp>25℃</temp><wind>3</wind><pm2.5>100</pm2.5></channel><channel id="4"><city>深圳</city><temp>27℃</temp><wind>6</wind><pm2.5>150</pm2.5></channel></weather>
6.对应的JAVABEAN代码
package com.hui.xmlparse;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;public class ParserXml {public static List<Channel> weatherlist = null;public static Channel ch = null;public static List <Channel> weatherParser(InputStream in) throws Exception {//获取xml解析器XmlPullParser xpp = Xml.newPullParser();//设置解析器参数xpp.setInput(in, "utf-8");//获取事件类型int type = xpp.getEventType();//不断向下解析while(type != XmlPullParser.END_DOCUMENT){switch(type){case XmlPullParser.START_TAG://解析开始标签//具体判断是哪个开始标签if("weather".equals(xpp.getName())){weatherlist = new ArrayList<Channel>();}else if("channel".equals(xpp.getName())){ch = new Channel();String id = xpp.getAttributeValue(0);ch.setId(id);}else if("city".equals(xpp.getName())){String city = xpp.nextText();ch.setCity(city);}else if("temp".equals(xpp.getName())){String temp = xpp.nextText();ch.setTemp(temp);}else if("wind".equals(xpp.getName())){String wind = xpp.nextText();ch.setWind(wind);}else if("pm2.5".equals(xpp.getName())){String pm250 = xpp.nextText();ch.setPm250(pm250);}break;case XmlPullParser.END_TAG://解析结束标签//判断要解析的结束标签if("channel".equals(xpp.getName())){//把ch对象添加到集合weatherlist.add(ch);}break; }type = xpp.next();}return weatherlist;}}
xml文件解析(使用解析器)相关推荐
- 对xml文件的sax解析(增删改查)之一
crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...
- pymavlink 源码剖析(一)之XML文件的数据解析
文章目录 1 引言 2 pymavlink 的代码自动生成方法 3 XML 文件的数据解析 3.1 XML 文件预处理 3.2 解析 XML 的数据 3.2.1 依据协议版本初始化一些版本特征变量 3 ...
- 第20讲:Mybatis 中 XML 文件是如何解析的?
大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...
- 生成XML文件的步骤 解析XML文件
##生成XML文件的步骤 1.初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2.设置序列化器的参数 serializer. ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
1 // 使用dom4j对XML文档进行解析 CRUD 2 public class Demo1 { 3 4 //读取XML文档中第二本书的书名 <书名>javaWEB</书名> ...
- tomcat server.xml文件的配置解析
一直想写个tomcat server.xml文件的配置详细解析,忽然发现网上有人写的挺不错的,这里就转载 :https://www.cnblogs.com/kismetv/p/7228274.html
- XML文件简介和解析
文章目录 1 XML文件 1.1 XML文件简介 1.2 dom4j解析XML文件 1 XML文件 1.1 XML文件简介 XML文件是可扩展标记语言,用于 1,保存数据 通过标签的属性和文本内容持久 ...
- Android向本地写入一个XML文件和解析XML文件
在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使 ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...
- xml文件解析的三种方式
SAX解析XML SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析 ...
最新文章
- Oracle 9i默认表空间
- keil编译时提示 Undefined symbol __ROR
- 数据中心实现高效运维的秘诀
- 感情沟通出了问题要怎么解决_冬养的月季花枝条干枯,开花萎蔫,哪里出了问题,该怎么解决?...
- 使用FCN做图像语义分割(实践篇)
- 【GPU精粹与Shader编程】(一) 全系列核心知识点总览
- 作业一 郝树伟 1101210664
- 用友服务器显示禁用,包头用友 U6 运行时提示端口4630 被禁用 或者 1433端口不通...
- 电大数据库应用技术形考3_华为荣耀路由3体验:Wi-Fi6技术成熟应用,真正的平民好路由...
- Echarts 柱状图配置圆角
- 记录一下小小的sql:找出每个班级里身高最高的人,并按班级排序
- 微信视频号推流直播使用测评
- 淘宝双十一实时显示成交数据是怎么实现的?
- SSM 前台AJax传递参数和controller后台接收的方法
- 前端cookie详解
- 51单片机温度传感器DS18B20
- 创投日报:3月28日收录投融资项目19起
- 解决微星主板点击睡眠后电脑死机
- 数据库的设计关键点总结
- Sklearn笔记--逻辑回归调参指南
热门文章
- html中怎么做扇形菜单,纯CSS3实现扇形动画菜单(简化版)实例源码
- 一枚笑脸 emoji,估值 20 亿美元!这个开源项目有点强...
- 速看|快速软件开发框架突破信息孤岛,高效实现数字化发展!
- 新疆库尔勒市杜鹃河上演人禽共泳和谐相处画卷
- 离散数学常用符号TeX输入
- 怎么给Guest 账户设置密码
- 点云法线估计:C++实现
- 消息中间件 - ActiveMQ高级特性和用法-Mirrored Queue 镜像队列(了解即可)(十)
- 2021-11-24 micropython esp32休眠假死 唤醒 rtc nvs btree数据保持
- 【2018年7月英语学习】--零散中星星点点