一.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. Pugixml一种快速解析XML文件的开源解析库

    Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器.接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码: 使用Pugixml可通 ...

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

    先上代码: package com.saxparsetest; //the filename of this file is :saxparse.java import javax.xml.parse ...

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

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

  5. xml文件使用DOM解析,报异常org.xml.sax.SAXParseException,"characterEncoding" 的引用必须以 ';' 分隔符结尾异常

    这个异常一般为xml文件对&的报错,只需要将&改为转义后的&amp即可解决

  6. 对xml文件的简单解析

    package com.eprobj.demo; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; impor ...

  7. 利用freemarker生成word,word另存为xml文件的标签解析

    http://wenku.baidu.com/link?url=YxTZWVP3ssO-e_Br3LIZVq2xOQnqaSz8gLPiRUDN8NIR_wX2-Z25OqwbVn5kXqGiOFYU ...

  8. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  9. IOS的XML文件解析,利用了NSData和NSFileHandle

    如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...

  10. 使用SAX解析XML文件

    SAX这是Simple API for XML缩写,它不是由引起W3C拟议标准正式.尽管如此,使用SAX很少几个,点儿全部的XML解析器都会支持它. 与DOM比較而言,SAX是一种轻量型的方法. 我们 ...

随机推荐

  1. re部分

    0x01.Writeup-RE-CM_2 题目: 解题思路: 1.这个是经过xor的,王老师提示说用xortool,于是放进kali,装好之后执行 xortool CM_2.exe -b, 0.out ...

  2. P2757 导弹的召唤(数据加强)

    传送门 LIS的O(nlgn)模板题.加强"导弹拦截" #include <cstdio> #include <cstring> #include < ...

  3. 条件随机场 Conditional Random Fields

    简介 假设你有冠西哥一天生活中的照片(这些照片是按时间排好序的),然后你很无聊的想给每张照片打标签(Tag),比如这张是冠西哥在吃饭,那张是冠西哥在睡觉,那么你该怎么做呢? 一种方法是不管这些照片的序 ...

  4. 裸板驱动总结(makefile+lds链接脚本+裸板调试)

    在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...

  5. 简易RPC框架-熔断降级机制

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. 数据库 SQL Server2012安装步骤详解

    这篇文章主要给大家讲解一下数据库SQL Server2012的安装步骤(若有雷同纯属巧合,还望谅解!) 在正式安装之前,我们需要进行两个设置: ① 首先需要关闭Windows防火墙,若不关闭,后续的安 ...

  7. angular中复制文字到剪切板

    function copyToClipboard(oElement, value) { var aux = document.createElement("input"); if ...

  8. Scala入门系列(一):基础语法

    Scala基础语法 Scala与JAVA的关系 Scala是基于Java虚拟机,也就是JVM的一门编程语言,所有Scala的代码都需要经过编译为字节码,然后交由Java虚拟机来运行. 所以Scala和 ...

  9. CCF-201512-2-消除类游戏

    问题描述 试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游 ...

  10. UWP 应用程序内购

    今天来说一下应用程序内购的问题,这里面有坑,给自己做个笔记,也给需要的人提个醒. 我目前的需要是可以允许用户捐赠赞助App的形式内购,最终效果如下 只讲上面的列表部分,下面的就是图片布局啥的,没意思了 ...