金融审核网站制作,站长之家网址ip查询,怎么做律师事务所的网站,c 网站开发项目教程在安卓中有很多种解析方式。按照大方向有xml解析和json解析。而#xff0c;细致的分#xff0c;xml和json解析各有自己的很多解析方式。今天这一篇主要介绍xml解析中的pull解析。对于xml的解析方式#xff0c;我之前在javaweb一些知识中有写过dom和dom4j等等解析方式。有兴趣… 在安卓中有很多种解析方式。按照大方向有xml解析和json解析。而细致的分xml和json解析各有自己的很多解析方式。今天这一篇主要介绍xml解析中的pull解析。对于xml的解析方式我之前在javaweb一些知识中有写过dom和dom4j等等解析方式。有兴趣的读者可以去javaweb篇里面找相关的内容。 先自定义一个数据源假设就是访问服务器返回的xml数据文件名称为weather.xml ?xml version1.0 encodingutf-8 standaloneyes ?
weathercityname北京/nametemp5°/temppm80/pm/citycityname西安/nametemp-5°/temppm800/pm/citycityname南京/nametemp12°/temppm60/pm/city
/weather 针对此建立一个javabean以稍后保存上边的数据。每一个city就代表一个对象。这样更符合面向对象的思想 在mainactivity中代码完成解析过程 package com.itydl.pullparser;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;import com.itheima.pullparser.domain.City;import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.view.View;//服务器向客户端传送数据。这些数据一般保存在xml文件中的。因此需要对数据进行解析、
public class MainActivity extends Activity {ListCity cityList;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){//获取到src文件夹下的资源文件ClassLoader.getResourceAsStream.返回的是InputStream类型的。InputStream is getClassLoader().getResourceAsStream(weather.xml);//拿到pull解析器对象XmlPullParser是一个接口不可以newXmlPullParser xp Xml.newPullParser();//初始化try {xp.setInput(is, utf-8);//初始化设置文件的位置流对象解析目标文件对象和解析编码格式//获取当前节点的事件类型因为pull解析是从xml文件第一行头节点往下解析的“指针”往下移动标签节点不同事件类型就不同。//通过事件类型的判断我们可以知道当前节点是什么节点从而确定我们应该做什么操作int type xp.getEventType();City city null;while(type ! XmlPullParser.END_DOCUMENT){//xp.END_DOCUMENT//根据节点的类型要做不同的操作switch (type) {case XmlPullParser.START_TAG:// 获取当前节点的名字if(weather.equals(xp.getName())){//创建city集合对象用于存放city的javabeancityList new ArrayListCity();}else if(city.equals(xp.getName())){//创建city的javabean对象city new City();}else if(name.equals(xp.getName())){// 获取当前节点的下一个节点的[文本]String name xp.nextText();city.setName(name);}else if(temp.equals(xp.getName())){// 获取当前节点的下一个节点的文本String temp xp.nextText();city.setTemp(temp);}else if(pm.equals(xp.getName())){// 获取当前节点的下一个节点的文本String pm xp.nextText();city.setPm(pm);}break;case XmlPullParser.END_TAG:if(city.equals(xp.getName())){//把city的javabean放入集合中。三个城市city解析完一个城市就把那个城市实例放到集合里面去。cityList.add(city);}break;}//把指针移动到下一个节点并返回该节点的事件类型type xp.next();}for (City c : cityList) {System.out.println(c.toString());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
运行程序解析结果如下 转载于:https://www.cnblogs.com/wanghang/p/6299620.html