首先,要解析的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里。