Android--使用Pull解析器解析xml文件

来源:互联网 发布:网页防篡改软件 编辑:程序博客网 时间:2024/05/20 00:17

2个类:1个实体类Person.java,1个继承Activity的类

 

1.Person.java

 

package com.mrzhu.work_1_sax;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 [personId=" + personId + ", name=" + name + ", address="+ address + ", tel=" + tel + ", fax=" + fax + ", email="+ email + "]";}}


 

 

2.继承Activity的类:

 

package com.mrzhu.work_1_sax;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.SAXException;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import android.app.Activity;import android.os.Bundle;import android.util.Xml;import android.view.View;import android.widget.Toast;public class PullActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }        public void pull(View v){    pullParse();      }        public void pullParse(){    List<Person> persons = null;    Person person = null;    InputStream in = null;    try {    XmlPullParser pullParser = Xml.newPullParser();    in = getAssets().open("person.xml");pullParser.setInput(in, "utf-8");int eventType = pullParser.getEventType();while(eventType != XmlPullParser.END_DOCUMENT){String qName = pullParser.getName();switch(eventType){case XmlPullParser.START_DOCUMENT:persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG:if("person".equalsIgnoreCase(qName)){person = new Person();person.setPersonId(pullParser.getAttributeValue(null, "personid"));}else if("name".equalsIgnoreCase(qName)){person.setName(pullParser.nextText());}else if("address".equalsIgnoreCase(qName)){person.setAddress(pullParser.nextText());}else if("tel".equalsIgnoreCase(qName)){person.setTel(pullParser.nextText());}else if("fax".equalsIgnoreCase(qName)){person.setFax(pullParser.nextText());}else if("email".equalsIgnoreCase(qName)){person.setEmail(pullParser.nextText());}break;case XmlPullParser.END_TAG:if("person".equalsIgnoreCase(qName)){persons.add(person);}break;}eventType = pullParser.next();}in.close();} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}        for (Person person2 : persons) {Toast.makeText(this, person2.toString(), Toast.LENGTH_SHORT).show();}    }}


 

 

 

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="match_parent"        android:layout_height="wrap_content"        android:onClick="pull"        android:text="pull" /></LinearLayout>

 

 

放在assets文件夹下的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>