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 g...
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;
}
@Override
public 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 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();
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
放在assets文件夹下的person.xml文件
Tony Blair
10 Downing Street, London, UK
(061) 98765
(061) 98765
blair@everywhere.com
Bill Clinton
White House, USA
(001) 6400 98765
(001) 6400 98765
bill@everywhere.com
Tom Cruise
57 Jumbo Street, New York, USA
(001) 4500 67859
(001) 4500 67859
cruise@everywhere.com
Linda Goodman
78 Crax Lane, London, UK
(061) 54 56789
(061) 54 56789
linda@everywhere.com