pull解析XML文件

前端之家收集整理的这篇文章主要介绍了pull解析XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在Android平台上可以使用SAX、 DOM和Android附带的pull解析器解析XML文件。android系统推荐使用pull解析,pull解析是轻量级解析,在android的内核中已经嵌入了pull,所以不需导入第三方jar包。以下讲解的是使用pull解析器来解析XML文件的实例。

1,下面是本例子要解析的XML文件city.xml(把此文件拷贝到src目录下):

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" standalong="yes"?>
<weather>
  <city>
    <name>北京</name>
    <temp>6*</temp>
    <pm2.5>300</pm2.5>
  </city>
  <city>
    <name>上海</name>
    <temp>15*</temp>
    <pm2.5>30</pm2.5>
  </city>
  <city>
    <name>深圳</name>
    <temp>16*</temp>
    <pm2.5>30</pm2.5>
  </city>
</weather></span>

2,创建解析后数据要封装到的javabean对象:

<span style="font-size:18px;">package com.example.pull.domain;
public class City {
	private String name;
	private String temp;
	private String pm25;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTemp() {
		return temp;
	}
	public void setTemp(String type) {
		this.temp = temp;
	}
	public String getPm25() {
		return pm25;
	}
	public void setPm25(String pm25) {
		this.pm25 = pm25;
	}
	
	public City() {
		super();
	}
	
	public City(String name,String temp,String pm25) {
		super();
		this.name = name;
		this.temp = temp;
		this.pm25 = pm25;
	}
	
	@Override
	public String toString() {
		return "City [name=" + name + ",temp=" + temp + ",pm25=" + pm25 + "]";
	}
}</span>

3,使用pull解析器解析city.xml对象:

<span style="font-size:18px;">public class MainActivity extends Activity {

	private List<City> cityList;
	private City city;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);
	}

	// 解析xml文件
	public void doClick(View v) {
		// 1,通过类加载器来拿到资源文件
		InputStream is = getClassLoader().getResourceAsStream("city.xml");
		// 2,拿到解析器对象
		XmlPullParser parser = Xml.newPullParser();
		try {
			// 3,初始化解析器对象
			parser.setInput(is,"utf-8");
			// 4,开始解析
			// 获取当前节点的事件类型(相当于指针)
			int type = parser.getEventType();
			while (type != XmlPullParser.END_DOCUMENT) {
				switch (type) {
				case XmlPullParser.START_TAG:
					if ("weather".equals(parser.getName())) {
						// 解析到开始节点(weather)时,初始化集合对象
						cityList = new ArrayList<City>();
					} else if ("city".equals(parser.getName())) {
						// 解析到"city"节点时,初始化city对象
						city = new City();
					}
					// 解析"city"中的"name"
					else if ("name".equals(parser.getName())) {
						// 获取当前节点的下一个节点的文本
						String name = parser.nextText();
						city.setName(name);
					}
					// 解析"city"中的"temp"
					else if ("temp".equals(parser.getName())) {
						// 获取当前节点的下一个节点的文本
						String temp = parser.nextText();
						city.setTemp(temp);
					}
					// 解析"city"中的"pm25"
					else if ("pm25".equals(parser.getName())) {
						// 获取当前节点的下一个节点的文本
						String pm25 = parser.nextText();
						city.setPm25(pm25);
					}
					break;

				case XmlPullParser.END_TAG:
					// 如果结束节点为“city”,把此city对象存入到集合中
					if ("city".equals(parser.getName())) {
						cityList.add(city);
					}
					break;
				}
				// 当前节点解析后,指针下移,解析下一个节点
				type = parser.next();
			}
			// 打印输出解析的文件
			for (City city : cityList) {
				System.out.println(city.toString());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}</span>


友情提示:如果是在java或JavaEE中使用pull解析xml文件,需要额外导入支持pull解析的第三方jar包。

下载地址:http://download.csdn.net/detail/ljw124213/9614504

原文链接:https://www.f2er.com/xml/295529.html

猜你在找的XML相关文章