Android--使用Pull解析器解析xml文件
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>