//解析本地assets下的文件
<?xml version="1.0" encoding="utf-8"?>
<books>
<book id="1">
<price>50</price>
<name>三国演义</name>
<author>罗贯中</author>
</book>
<book id="2">
<price>60</price>
<name>红楼梦</name>
<author>曹雪芹</author>
</book>
<book id="3">
<price>40</price>
<name>水浒传</name>
<author>施耐庵</author>
</book>
</books>
//布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
//MainActivity
package com.example.sax;
import java.util.ArrayList;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv_name = (TextView) findViewById(R.id.tv_name);
try {
// 得到工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
// 创建parse
SAXParser parser = factory.newSAXParser();
Hander hb = new Hander();
// 得到目录
parser.parse(getAssets().open("books.xml"), hb);
ArrayList<Book> list = hb.getList();
for (Book book : list) {
tv_name.append(book.toString() + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Hander
package com.example.sax;
import java.util.ArrayList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.util.Log;
public class Hander extends DefaultHandler {
private String tagName;
private Book book;
private ArrayList<Book> list;
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
Log.i("Main", "开始解析文件");
list = new ArrayList<Book>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
tagName = qName;
Log.i("Main", "开始解析" + qName);
if (qName.equals("book")) {
book = new Book();
book.setId(attributes.getValue("id"));
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
String value = new String(ch, start, length);
if (!value.trim().equals("")) {
Log.i("Main", "qName:" + tagName + "------vaules" + value);
}
if (tagName.equals("price") && !value.trim().equals("")) {
book.setPrice(value);
} else if (tagName.equals("name") && !value.trim().equals("")) {
book.setName(value);
} else if (tagName.equals("author") && !value.trim().equals("")) {
book.setAuthor(value);
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
Log.i("Main", "结束解析" + qName);
if (qName.equals("book")) {
list.add(book);
}
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
Log.i("Main", "结束解析文件");
}
public ArrayList<Book> getList() {
return list;
}
}
//Bean包
package com.example.sax;
public class Book {
private String id;
private String price;
private String name;
private String author;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Book(String id, String price, String name, String author) {
super();
this.id = id;
this.price = price;
this.name = name;
this.author = author;
}
public Book() {
super();
}
@Override
public String toString() {
return "Book [id=" + id + ", price=" + price + ", name=" + name
+ ", author=" + author + "]";
}
}