转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html
xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环境下,你需要自己去获取xmlpull所依赖的类库。
环境:
kxml2-2.3.0.jar
xmlpull_1_1_3_4c.jar
以上两个jar分别从以下网站下载:
http://www.xmlpull.org/ xmlpull
http://kxml.sourceforge.net/ kxml
xml文件:
<?
xml version="1.0" encoding="UTF-8"
?>
<
root
>
<
student
id
="1"
group
="1"
>
<
name
>张三
</
name
>
<
sex
>男
</
sex
>
<
age
>18
</
age
>
<
email
>[email protected]
</
email
>
<
birthday
>1987-06-08
</
birthday
>
<
memo
>好学生
</
memo
>
</
student
>
<
student
id
="2"
group
="2"
>
<
name
>李四
</
name
>
<
sex
>女
</
sex
>
<
age
>18
</
age
>
<
email
>[email protected]
</
email
>
<
birthday
>1987-06-08
</
birthday
>
<
memo
>好学生
</
memo
>
</
student
>
<
student
id
="3"
group
="3"
>
<
name
>小王
</
name
>
<
sex
>男
</
sex
>
<
age
>18
</
age
>
<
email
>[email protected]
</
email
>
<
birthday
>1987-06-08
</
birthday
>
<
memo
>好学生
</
memo
>
</
student
>
<
student
id
="4"
group
="4"
>
<
name
>小张
</
name
>
<
sex
>男
</
sex
>
<
age
>18
</
age
>
<
email
>[email protected]
</
email
>
<
birthday
>1987-06-08
</
birthday
>
<
memo
>好学生
</
memo
>
</
student
>
<
student
id
="5"
group
="5"
>
<
name
>小明
</
name
>
<
sex
>男
</
sex
>
<
age
>18
</
age
>
<
email
>[email protected]
</
email
>
<
birthday
>1987-06-08
</
birthday
>
<
memo
>好学生
</
memo
>
</
student
>
</
root
>
Xml对应的实体bean文件:
package com.parsexml.entity;
public
class Student {
private
int id;
private
int group;
private String name;
private String sex;
private
int age;
private String email;
private String memo;
private String birthday;
public
int getId() {
return id;
}
public
void setId(
int id) {
this.id = id;
}
public
int getGroup() {
return group;
}
public
void setGroup(
int group) {
this.group = group;
}
public String getName() {
return name;
}
public
void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public
void setSex(String sex) {
this.sex = sex;
}
public
int getAge() {
return age;
}
public
void setAge(
int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public
void setEmail(String email) {
this.email = email;
}
public String getMemo() {
return memo;
}
public
void setMemo(String memo) {
this.memo = memo;
}
public String getBirthday() {
return birthday;
}
public
void setBirthday(String birthday) {
this.birthday = birthday;
}
}
Pull解析代码
package com.parsexml;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.parsexml.entity.Student;
public
class PullParseXml {
public List<Student> PullParseXML(){
List<Student> list=
null;
Student student =
null;
//
构建XmlPullParserFactory
try {
XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();
//
获取XmlPullParser的实例
XmlPullParser xmlPullParser=pullParserFactory.newPullParser();
//
设置输入流 xml文件
xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"), "UTF-8");
//
开始
int eventType=xmlPullParser.getEventType();
try {
while(eventType!=XmlPullParser.END_DOCUMENT){
String nodeName=xmlPullParser.getName();
switch (eventType) {
//
文档开始
case XmlPullParser.START_DOCUMENT:
list=
new ArrayList<Student>();
break;
//
开始节点
case XmlPullParser.START_TAG:
//
判断如果其实节点为student
if("student".equals(nodeName)){
//
实例化student对象
student=
new Student();
//
设置Id属性
student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));
//
设置Group属性
student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));
}
else
if("name".equals(nodeName)){
//
设置name
student.setName(xmlPullParser.nextText());
}
else
if("sex".equals(nodeName)){
//
设置sex
student.setSex(xmlPullParser.nextText());
}
else
if("age".equals(nodeName)){
//
设置age
student.setAge(Integer.parseInt(xmlPullParser.nextText()));
}
else
if("email".equals(nodeName)){
//
设置email
student.setEmail(xmlPullParser.nextText());
}
else
if("birthday".equals(nodeName)){
//
设置birthday
student.setBirthday(xmlPullParser.nextText());
}
else
if("memo".equals(nodeName)){
//
设置memo属性
student.setMemo(xmlPullParser.nextText());
}
break;
//
结束节点
case XmlPullParser.END_TAG:
if("student".equals(nodeName)){
list.add(student);
student=
null;
}
break;
default:
break;
}
eventType=xmlPullParser.next();
}
}
catch (NumberFormatException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
catch (XmlPullParserException e) {
e.printStackTrace();
}
return list;
}
public
static
void main(String[] args) {
List<Student> list=
new PullParseXml().PullParseXML();
for(Student student:list){
System.out.println("id:"+student.getId()+"\tgroup:"+student.getGroup()+"\tname:"+student.getName()+"\tsex:"+student.getSex()+"\tage:"+student.getAge()+"\temail:"+student.getEmail()+"\tbirthday:"+student.getBirthday()+"\tmemo:"+student.getMemo());
}
}
}
注:若工程中缺少kxml2-2.3.0.jar文件则会报以下异常信息:
你应该添加kxml2-2.3.0.jar包到你的classpath下
效果图:
