一.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文件解析(使用解析器)相关推荐

  1. 对xml文件的sax解析(增删改查)之一

    crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...

  2. pymavlink 源码剖析(一)之XML文件的数据解析

    文章目录 1 引言 2 pymavlink 的代码自动生成方法 3 XML 文件的数据解析 3.1 XML 文件预处理 3.2 解析 XML 的数据 3.2.1 依据协议版本初始化一些版本特征变量 3 ...

  3. 第20讲:Mybatis 中 XML 文件是如何解析的?

    大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...

  4. 生成XML文件的步骤 解析XML文件

    ##生成XML文件的步骤 1.初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2.设置序列化器的参数 serializer. ...

  5. 2.3 使用 dom4j 对 xml文件进行 dom 解析

    1 // 使用dom4j对XML文档进行解析 CRUD 2 public class Demo1 { 3 4 //读取XML文档中第二本书的书名 <书名>javaWEB</书名> ...

  6. tomcat server.xml文件的配置解析

    一直想写个tomcat server.xml文件的配置详细解析,忽然发现网上有人写的挺不错的,这里就转载 :https://www.cnblogs.com/kismetv/p/7228274.html

  7. XML文件简介和解析

    文章目录 1 XML文件 1.1 XML文件简介 1.2 dom4j解析XML文件 1 XML文件 1.1 XML文件简介 XML文件是可扩展标记语言,用于 1,保存数据 通过标签的属性和文本内容持久 ...

  8. Android向本地写入一个XML文件和解析XML文件

    在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使 ...

  9. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...

  10. xml文件解析的三种方式

    SAX解析XML SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析 ...

最新文章

  1. Oracle 9i默认表空间
  2. keil编译时提示 Undefined symbol __ROR
  3. 数据中心实现高效运维的秘诀
  4. 感情沟通出了问题要怎么解决_冬养的月季花枝条干枯,开花萎蔫,哪里出了问题,该怎么解决?...
  5. 使用FCN做图像语义分割(实践篇)
  6. 【GPU精粹与Shader编程】(一) 全系列核心知识点总览
  7. 作业一 郝树伟 1101210664
  8. 用友服务器显示禁用,包头用友 U6 运行时提示端口4630 被禁用 或者 1433端口不通...
  9. 电大数据库应用技术形考3_华为荣耀路由3体验:Wi-Fi6技术成熟应用,真正的平民好路由...
  10. Echarts 柱状图配置圆角
  11. 记录一下小小的sql:找出每个班级里身高最高的人,并按班级排序
  12. 微信视频号推流直播使用测评
  13. 淘宝双十一实时显示成交数据是怎么实现的?
  14. SSM 前台AJax传递参数和controller后台接收的方法
  15. 前端cookie详解
  16. 51单片机温度传感器DS18B20
  17. 创投日报:3月28日收录投融资项目19起
  18. 解决微星主板点击睡眠后电脑死机
  19. 数据库的设计关键点总结
  20. Sklearn笔记--逻辑回归调参指南

热门文章

  1. html中怎么做扇形菜单,纯CSS3实现扇形动画菜单(简化版)实例源码
  2. 一枚笑脸 emoji,估值 20 亿美元!这个开源项目有点强...
  3. 速看|快速软件开发框架突破信息孤岛,高效实现数字化发展!
  4. 新疆库尔勒市杜鹃河上演人禽共泳和谐相处画卷
  5. 离散数学常用符号TeX输入
  6. 怎么给Guest 账户设置密码
  7. 点云法线估计:C++实现
  8. 消息中间件 - ActiveMQ高级特性和用法-Mirrored Queue 镜像队列(了解即可)(十)
  9. 2021-11-24 micropython esp32休眠假死 唤醒 rtc nvs btree数据保持
  10. 【2018年7月英语学习】--零散中星星点点