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 ...
- Pugixml一种快速解析XML文件的开源解析库
Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器.接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码: 使用Pugixml可通 ...
- 对xml文件的sax解析(增删改查)之二
先上代码: package com.saxparsetest; //the filename of this file is :saxparse.java import javax.xml.parse ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名> @Test ...
- xml文件使用DOM解析,报异常org.xml.sax.SAXParseException,"characterEncoding" 的引用必须以 ';' 分隔符结尾异常
这个异常一般为xml文件对&的报错,只需要将&改为转义后的&即可解决
- 对xml文件的简单解析
package com.eprobj.demo; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; impor ...
- 利用freemarker生成word,word另存为xml文件的标签解析
http://wenku.baidu.com/link?url=YxTZWVP3ssO-e_Br3LIZVq2xOQnqaSz8gLPiRUDN8NIR_wX2-Z25OqwbVn5kXqGiOFYU ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- IOS的XML文件解析,利用了NSData和NSFileHandle
如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...
- 使用SAX解析XML文件
SAX这是Simple API for XML缩写,它不是由引起W3C拟议标准正式.尽管如此,使用SAX很少几个,点儿全部的XML解析器都会支持它. 与DOM比較而言,SAX是一种轻量型的方法. 我们 ...
随机推荐
- shopxx------list列表回显修改尝试
需求:在商品列表展示页面增加一列 一.修改模板 1.列表页面对应的freemarker模板位置 /shopxx/WebContent/WEB-INF/template/admin/product/li ...
- 11. 配置ZooKeeper ensemble
一个ZooKeeper集群或复制的ZooKeeper服务器集群应该优化配置,以避免出现脑裂(split-brain)等情况. 由于网络分割,同一ensemble的两个不同服务器可能构成领导者不一致,因 ...
- Android-DataBinding入门1
1.需要开启DataBinding功能: 在build.gradle配置: android{ dataBinding{ enabled = true } } 2.布局 布局中,根节点要以layout开 ...
- Dashboard集群
#Dashboard集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Dashboard集群 #####在 ...
- TFS2017持续发布中调用PowerShell启停远程应用程序
目前团队项目中有多个Web.服务以及与大数据平台对接接口等应用,每次的发布和部署采用手工的方式进行.停止应用程序,拷贝发布包,启动应用程序,不停的循环着,并且时不时地会出现一些人为错误性问题.这种模式 ...
- 关于C#中函数的认识
对于C#语言中的函数,大概分之为函数的声明及其调用. 函数的声明: 1.函数的声明是指给一段代码取名称. 2.函数的声明位置必须在类中. 3.函数声明的语法: 函数声明的语法:static void ...
- slurm-16.05.3任务调度系统部署与测试(1)
1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...
- Spring Cloud 自定义ConfigServer
公司需要将系统配置信息中的敏感信息独立存放. 现有系统采用Spring Cloud Config提供配置信息,其中敏感信息主要是Db配置,分解本次需求: (1)数据库配置信息分离(主要是Db信息). ...
- Model中内部类meta详解
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性. 以下对此作一总结: Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项 ...
- http请求HttpClient短信接口
项目中安全设置找回密码的功能,需要通过发送短信验证绑定手机,通过绑定的手机号验证并重新设置密码. 因为项目是通过maven管理的,所以需要在pom.xml文件中引入jar包, maven引入的jar包 ...