package com.lidaochen.phonecall;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.ThemedSpinnerAdapter; import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
{
// 找到TextView控件
TextView textView = (TextView)findViewById(R.id.textView);
// 通过上下文获取资产管理者
InputStream inputStream = getAssets().open("weather.xml");
// 调用我们定义的方法解析XML文件
List<Channel> weatherlists = WeatherParser.parserXml(inputStream);
StringBuffer sb = new StringBuffer();
for (Channel channel:weatherlists)
{
sb.append(channel.toString());
}
// 将解析的文件内容显示到TextView控件上面
textView.setText(sb.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
 package com.lidaochen.phonecall;

 import android.util.Xml;

 import org.xmlpull.v1.XmlPullParser;

 import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; public class WeatherParser {
// 服务器是以流的形式把数据返回的
public static List<Channel> parserXml(InputStream In) throws Exception
{
// 声明集合对象
List<Channel> weatherlists = null;
Channel channel = null;
// 获取XmlPullParser解析的实例
XmlPullParser xmlPullParser = Xml.newPullParser();
// 设置XmlPullParser的参数
xmlPullParser.setInput(In, "utf-8");
// 获取事件类型
int type = xmlPullParser.getEventType();
while(type != XmlPullParser.END_DOCUMENT)
{
switch (type)
{
case XmlPullParser.START_TAG:
if ("weather".equals(xmlPullParser.getName()))
{
// 创建一个集合对象
weatherlists = new ArrayList<Channel>();
}
else if ("channel".equals(xmlPullParser.getName()))
{
// 创建Channel对象
channel = new Channel();
// 获取id值
String id = xmlPullParser.getAttributeValue(0);
channel.setId(id);
}
else if ("city".equals(xmlPullParser.getName()))
{
String city = xmlPullParser.nextText();
channel.setCity(city);
}
else if ("temp".equals(xmlPullParser.getName()))
{
String temp = xmlPullParser.nextText();
channel.setTemp(temp);
}
else if ("wind".equals(xmlPullParser.getName()))
{
String wind = xmlPullParser.nextText();
channel.setWind(wind);
}
else if ("pm250".equals(xmlPullParser.getName()))
{
String pm250 = xmlPullParser.nextText();
channel.setPm250(pm250);
}
break;
case XmlPullParser.END_TAG: // 解析结束标志
// 判断要解析的结束标签是不是channel
if ("channel".equals(xmlPullParser.getName()))
{
// 把javabean对象存到集合中
weatherlists.add(channel);
}
break;
}
// 不停的向下解析
type = xmlPullParser.next();
} return weatherlists;
}
}
 package com.lidaochen.phonecall;

 public class Channel {
private String id;
private String city;
private String temp;
private String wind;
private String pm250; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getTemp() {
return temp;
} public void setTemp(String temp) {
this.temp = temp;
} public String getWind() {
return wind;
} public void setWind(String wind) {
this.wind = wind;
} public String getPm250() {
return pm250;
} public void setPm250(String pm250) {
this.pm250 = pm250;
} @Override
public String toString()
{
return "Channel [id=" + id + ", city=" + city + ", temp=" + temp
+ ", wind=" + wind + ", pm250=" + pm250 + "]\n";
}
}

下面是要解析的XML文件,需要放在assets目录下

 <?xml version="1.0" encoding="utf-8"?>
<weather>
<channel id ='1'>
<city>北京</city>
<temp>25°</temp>
<wind>3</wind>
<pm250>300</pm250> </channel> <channel id ='2'>
<city>郑州</city>
<temp>20°</temp>
<wind>4</wind>
<pm250>300</pm250> </channel> <channel id ='3'>
<city>长春</city>
<temp>10°</temp>
<wind>4</wind>
<pm250>100</pm250> </channel> <channel id ='4'>
<city>沈阳</city>
<temp>20°</temp>
<wind>1</wind>
<pm250>50</pm250>
</channel> </weather>

安卓开发之利用XmlPullParser解析XML文件的更多相关文章

  1. Android开发学习---使用XmlPullParser解析xml文件

    Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...

  2. 安卓开发之利用XmlSerializer生成XML文件

    package com.lidaochen.phonecall; import android.net.Uri; import android.os.Environment; import andro ...

  3. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  4. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  5. java中利用dom4j解析XML文件

    官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...

  6. 利用GDataXML解析XML文件

    1.导入GDataXMLNode.h 和 GDataXMLNode.m文件 2.导入libxml2库文件 3.工程target下Bulid Settings  搜索search 找到Hearder S ...

  7. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  8. 安卓解析XML文件

    安卓解析XML文件 主要有三种方式:DOM解析.SAX解析.PULL解析 其中: DOM解析为等XMl文件全部加载后,然后根据需要解析的内容解析出所需的内容数据. SAX解析为从XML文件中执行一行, ...

  9. Android程序解析XML文件的方法及使用PULL解析XML案例

    一.一般解析XML文件的方法有SAX和DOM.PULL (1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信 ...

随机推荐

  1. Mysql5.6.45配置安装

    ##1.1简介 因为之前电脑比较卡,自己重装了个系统,麻烦的就是装一些编程软件,但是自己吃饭的家伙也要会装啊,为了以后更方便的安装,自己总结一下步骤,进入正题 ##1.2资源下载 官方网站链接:    ...

  2. Build Telemetry for Distributed Services之OpenTracing指导:C#

    官网链接:https://opentracing.io/guides/ 官方微博:https://medium.com/opentracing Welcome to the OpenTracing G ...

  3. JAVA NIO学习笔记二 频道和缓冲区

    Java NIO 频道 Java NIO渠道类似于流,他们之间具有一些区别的: 您可以读取和写入频道.流通常是单向(读或写). 通道可以异步读取和写入数据. 通道常常是读取或写入缓冲区. 如上所述,您 ...

  4. Method org/apache/commons/dbcp/DelegatingResultSet.isClosed()Z is abstract

    按照网络上的排除建议,换成了alibaba的druid. 相关maven依赖如下,注意版本匹配问题 spring版本使用4.3.24.RELEASE <dependency> <gr ...

  5. mysql一条语句实现插入或更新的操作

    ,),(,) ON DUPLICATE KEY UPDATE c=VALUES(c); 或者 INSERT INTO table (id,a,b,c) select id,a,b,c from xxx ...

  6. 免Root停用“Android键盘(AOSP)”

    一.效果:隐藏手机状态栏输入法选择图标: 二.手段:使用ADB免root 停用系统默认Android键盘(AOSP),这里参考了大神的方法,在此表示感谢: 三.实现过程: 上图 下面就是按照大神的方法 ...

  7. 当微信小程序遇到AR(二)

    当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 本课程需要一定的基础:微信开发者工具,JavaS ...

  8. OPC API 简介

    ————————————————版权声明:本文为CSDN博主「lgbisha」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog. ...

  9. GitHub快速搭建个人博客

    > 正所谓前人栽树,后人乘凉.> > 感谢[Huxpro](https://github.com/huxpro)提供的博客模板> > [我的的博客](https://fl ...

  10. 如何编写spring mvc 项目

    src/main/resources/static 目录里放资源文件css js jpg src/main/resources/templates 目录里放模板,html模板/这里是内容的展示页面 s ...