主运行类

package com.mrzhu.test31;import java.io.InputStream;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;public class SAXParse extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }        //按钮事件    public void sax(View v){    startSax();    }private void startSax() {//获得解析器工厂SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();try {//获得解析器SAXParser saxParser = saxParserFactory.newSAXParser();//装载要解析的xml文件InputStream inputStream = getAssets().open("person.xml");SAXHandler saxHandler = new SAXHandler();//调用parse方法开始解析saxParser.parse(inputStream, saxHandler);//取得解析后的结果List<Person> list = saxHandler.getList();for (Person person : list) {Log.i("System.out", person.toString());}} catch (Exception e) {e.printStackTrace();}}}


SAXHandler类:

package com.mrzhu.test31;import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class SAXHandler extends DefaultHandler {private List<Person> list;private Person currPerson;private String tag;public List<Person> getList() {return list;}/** * 解析到开始标记时执行该方法 */@Overridepublic void startDocument() throws SAXException {super.startDocument();//实例化一个list用于存储解析出来的对象list = new ArrayList<Person>();}/** * 解析到开始元素时执行该方法 */@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);//当开始标签为person时实例化一个Person对象if("person".trim().equalsIgnoreCase(qName)){currPerson = new Person();//取得属性值currPerson.setPersonid(attributes.getValue("personId"));}//将解析到的标签赋值给tagtag = qName;}/** * 当解析到内容时执行该方法 */@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {super.characters(ch, start, length);if(tag != null){//判断解析出来的标签名,则取出对应值并设置给Person对象 if("name".trim().equalsIgnoreCase(tag)){currPerson.setName(new String(ch, start, length));}else if("address".trim().equalsIgnoreCase(tag)){currPerson.setAddress(new String(ch, start, length));}else if("tel".trim().equalsIgnoreCase(tag)){currPerson.setTel(new String(ch, start, length));}else if("fax".trim().equalsIgnoreCase(tag)){currPerson.setFax(new String(ch, start, length));}else if("email".trim().equalsIgnoreCase(tag)){currPerson.setEmail(new String(ch, start, length));}}}/** * 当解析到结束标签时执行该方法 */@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {super.endElement(uri, localName, qName);//若标签名为person,则将Person对象加到list集合中if("person".trim().equalsIgnoreCase(qName)){list.add(currPerson);}tag = null;}/** * 当解析到结束文档标签时执行该方法 */@Overridepublic void endDocument() throws SAXException {super.endDocument();}}


Person类:

package com.mrzhu.test31;public class Person {private String personid;private String name;private String address;private String tel;private String fax;private String email;public String getPersonid() {return personid;}public void setPersonid(String personid) {this.personid = personid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getFax() {return fax;}public void setFax(String fax) {this.fax = fax;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "Person [name=" + name + ", address=" + address + ", tel=" + tel+ ", fax=" + fax + ", email=" + email + "]";}}


person.xml文件:

<?xml version="1.0" encoding="UTF-8"?><people><person personid="E01"><name>Tony Blair</name><address>10 Downing Street, London, UK</address><tel>(061) 98765</tel><fax>(061) 98765</fax><email>blair@everywhere.com</email></person><person personid="E02"><name>Bill Clinton</name><address>White House, USA</address><tel>(001) 6400 98765</tel><fax>(001) 6400 98765</fax><email>bill@everywhere.com</email></person><person personid="E03"><name>Tom Cruise</name><address>57 Jumbo Street, New York, USA</address><tel>(001) 4500 67859</tel><fax>(001) 4500 67859</fax><email>cruise@everywhere.com</email></person><person personid="E04"><name>Linda Goodman</name><address>78 Crax Lane, London, UK</address><tel>(061) 54 56789</tel><fax>(061) 54 56789</fax><email>linda@everywhere.com</email></person></people>


main.xml文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <Button        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:onClick="sax"        android:text="@string/btn_sax" /></LinearLayout>


更多相关文章

  1. Android Timer 更好方法
  2. 删除android ScrollView边界阴影方法
  3. Android显示网络图片相关实现方法浅谈
  4. android 中Drawable跟Bitmap转换及常用于图片相关操作方法 - And
  5. Android屏幕自适应的四种方法
  6. Android中隐藏ActionBar的方法
  7. 在线升级android studio的方法

随机推荐

  1. Android例子—常用系统Intent合集
  2. Android打Jar包注意事项
  3. android xml操作
  4. android location 位置定位
  5. Android(安卓)系统名字、版本、API level
  6. android中APK开机自动运行
  7. Android(安卓)长按setOnItemLongClickLis
  8. Android(安卓)Drawable、Bitmap、byte[]
  9. 如何为Android(安卓)Activity设置背景图
  10. android 6.0系统 make otapackage 错误