pull解析xml

weather.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>

<weather>

<city>

<name>上海</name>

<temp>5°</temp>

<pm>80</pm>

</city>

<city>

<name>北京</name>

<temp>-5°</temp>

<pm>800</pm>

</city>

<city>

<name>西安</name>

<temp>12°</temp>

<pm>60</pm>

</city>

</weather>

package com.test.pullparser;

public class CityBean {

private String name;

private String temp;

private String pm;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTemp() {

return temp;

}

public void setTemp(String temp) {

this.temp = temp;

}

public String getPm() {

return pm;

}

public void setPm(String pm) {

this.pm = pm;

}

}

package com.test.pullparser;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;

import android.os.Bundle;

import android.util.Xml;

import android.view.View;

public class MainActivity extends Activity {

List<CityBean> cityList = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void click(View v){

//拿到xml文件

//获取src文件夹下的文件

InputStream inputStream = getClassLoader().getResourceAsStream("weather.xml");

//使用pull解析器解析文件

//获取解析器对象

XmlPullParser xp = Xml.newPullParser();

//初始化

try {

CityBean city = null;

xp.setInput(inputStream,"utf-8");

/*获取当前节点的事件类型,通过事件类型的判断,可以知道当前节点是

什么节点,从而确定将要执行的操作

int START_DOCUMENT = 0;//解析到了头节点

int END_DOCUMENT = 1;//解析结束

int START_TAG = 2;//解析到开始标签

int END_TAG = 3;//解析到结束标签

int TEXT = 4;

int CDSECT = 5;//CData区

int ENTITY_REF = 6;

int IGNORABLE_WHITESPACE = 7;

int PROCESSING_INSTRUCTION = 8;

int COMMENT = 9;

int DOCDECL = 10;

*/

int type = xp.getEventType();

while(type != XmlPullParser.END_DOCUMENT){

//获取下一个节点,并返回该节点的事件类型

//根据节点的事件类型,要做不同的操作

switch (type) {

case XmlPullParser.START_TAG:

//获取当前节点的名字

if("weather".equals(xp.getName())){

//创建cityJavabean对象,用于存放city集合

cityList = new ArrayList<CityBean>();

}else if("city".equals(xp.getName())){

//创建cityJavabean对象

city = new CityBean();

}else if("name".equals(xp.getName())){

try {

String name = xp.nextText();

city.setName(name);

} catch (IOException e) {

e.printStackTrace();

}

}

else if("temp".equals(xp.getName())){

try {

String temp = xp.nextText();

city.setTemp(temp);

} catch (IOException e) {

e.printStackTrace();

}

}

else if("pm".equals(xp.getName())){

try {

String pm = xp.nextText();

city.setPm(pm);

} catch (IOException e) {

e.printStackTrace();

}

}

break;

case XmlPullParser.END_TAG:

if("city".equals(xp.getName())){

//把city javabean放入集合中

cityList.add(city);

}

break;

default:

break;

}

}

} catch (XmlPullParserException e) {

e.printStackTrace();

}

}

}

时间: 2024-10-17 09:48:47

pull解析xml的相关文章

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

首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message> <sms> <body> 陈驰0 </body> <date> 1462162910995 </date> <address> 1380 </address> <type> 1 </type> &

Android DOM、SAX、Pull解析XML(转)

本篇随笔将详细讲解如何在Android当中解析服务器端传过来的XML数据,这里将会介绍解析xml数据格式的三种方式,分别是DOM.SAX以及PULL. 一.DOM解析XML 我们首先来看看DOM(Document Object Model)这种方式解析xml,通过DOM解析xml在j2ee开发中非常的常见,它将整个xml看成是一个树状的结构,在解析的时候,会将整个xml文件加载到我们的内存当中,然后通过DOM提供的API来对我们的xml数据进行解析,这种方式解析xml非常的方便,并且我们可以通过

PULL解析XML的运行机制详解

PULL解析简单易上手,基本上看一遍,基本上就会解析啦,但总是感觉对PULL解析的运行机制不是很了解,就总结了以下事件驱动到底是怎么执行的.. PULL: Android内置了PULL解析器.PULL解析器与SAX解析器类似,它提供了类似的事件,例如,开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发事件.每一种事件将作为数值代码被传送,因此使用一个switch来对感兴趣的事件进行处理. 这也是我最喜欢的方法,简单好用. 下面将对解析过程进行详细介绍,它到底是怎么运行

android学习二十一(使用Pull解析xml)

使用Pull解析xml 为了测试从网上得到的数据信息,我们需要配置一台服务器,我使用的是tomcat6.0,怎么配置tomcat我就不讲解了.配置好了以后在apache-tomcat-6.0.39\webapps\ROOT路径下面放置一个文件就可以通过浏览器来访问了 ,比如:放置了 一个hello.html文件,浏览器进行访问的路径是:http://localhost:8080/hello.html 现在在root目录下新建一个get_data.xml文件,内容如下: <apps> <a

Android——PULL解析XML

简介 Android中常常使用XML文件保存用户的APP设置信息.因此需要对XML文件的相关操作进行了解.本文将以<学生信息管理系统>为案例背景进行介绍相关的XML解析的介绍,以及其他相关知识的阐述. 需求: 在一个Activity中可以动态添加一个学生信息并保存到XML文件. 同时,还可以查看当前的所有学生信息. 相关技术: 线性布局 设置onClick()事件响应函数 添加一个TextView以显示添加的学生信息 清空所有的子元素(列表中所有的学生信息的TextView) PULL创建XM

android pull 解析xml方式

先获取到一个XmlPullParserFactory实例 通过实例得到XmlPullParser对象 调用XmlPullParser的setInput()方法将服务返回的XML数据设置进去开始解析 通过getEventType()可以得到当前的解析事件 While循环不断地进行解析 如果当前的解析事件不等于XmlPullParser.END_DOCUMENT,说明解析工作还没完成,调用next()方法后可以获取下一个解析事件. 在while循环中,我们通过getName()方法得到当前结点的名字

使用PULL解析XML文件

转载出处:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序.因为是基于流的处理,因此Xmlpull和 Sax都比较节约内存资源,不会象Dom那样要把所有节点以对橡树的形式展现在内存中. 但Xmlpull比Sax更简明,而且不需要扫描完整个流. 下面来看一个pull解析xml的例子: student.xml: 1 <?xml

Android 学习之pull解析Xml

一. PUll解析Xml public static List<Person> xmlParser(InputStream xml) throws Exception { List<Person> persons=null; Person p=null; XmlPullParser parser=Xml.newPullParser(); parser.setInput(xml, "UTF-8"); int event=parser.getEventType();

XListview的下拉刷新、上拉加载、用Pull解析XML

做之前需要导入XListview的文件,此是用第三方的xListview实现的,东西没写全.此是在Fragment中实现的 //--------------XListView的布局---------------- <me.XListView android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:id="@+id/lv&

android 通过pull解析xml文件

1 package com.example.xmldemo.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStreamReader; 9 import java.