android中XML的解析(pull)


首先,要解析的XML文件book.xml,将文件放在SRC根目录下:

 

<?xml version="1.0" encoding="UTF-8"?>  
<books>  
    <book id="12">  
        <name>thinking in java</name>  
        <price>85.5</price>  
    </book>  
    <book id="15">  
        <name>Spring in Action</name>  
        <price>39.0</price>  
    </book>
    <book id="15">  
        <name>Spring in Action</name>  
        <price>39.0</price>  
    </book> 
</books>


采用面向对象的方法,将改XML文件进行封装

public class Book {
	private int id;
	private String name;
	private float price;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		this.price = price;
	}
	@Override
	public String toString() {
		String str = id +"="+name +"=" + price;
		return str;
	}

}


 

准备工作完成,接着是XML文件的解析:

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

public class XMLpull{
	
	public List<Book> getBooks() throws Exception{
		List<Book> books = null;
		Book book = null;
		InputStream is = this.getClass().getClassLoader().getResourceAsStream("book.xml");
		XmlPullParser parser = Xml.newPullParser();
		parser.setInput(is, "UTF-8");
		int event = parser.getEventType();
		while(event != XmlPullParser.END_DOCUMENT){
			switch (event) {
			case XmlPullParser.START_DOCUMENT:
				books = new ArrayList<Book>();
				break;
				
			case XmlPullParser.START_TAG:
				if("book".equals(parser.getName())){
					book = new Book();
					book.setId(Integer.parseInt(parser.getAttributeValue(0)));
				}else if("name".equals(parser.getName())){
					book.setName(parser.nextText());
				}else if("price".equals(parser.getName())){
					book.setPrice(Float.parseFloat(parser.nextText()));
				}
				break;
			case XmlPullParser.END_TAG:
				if("book".equals(parser.getName())){
					books.add(book);
					book = null;
				}
				break;

			}
			event = parser.next();
		}
		return books;
	}
}

 

以上是xml文件的解析,将数据存在ArrayList里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值