转自: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文件:

<? xmlversion="1.0"encoding="UTF-8" ?>
< root >
< student id ="1" group ="1" >
< name >张三 </ name >
< sex ></ sex >
< age >18 </ age >
< email >zhangsan@163.com </ email >
< birthday >1987-06-08 </ birthday >
< memo >好学生 </ memo >
</ student >
< student id ="2" group ="2" >
< name >李四 </ name >
< sex ></ sex >
< age >18 </ age >
< email >lisi@163.com </ email >
< birthday >1987-06-08 </ birthday >
< memo >好学生 </ memo >
</ student >
< student id ="3" group ="3" >
< name >小王 </ name >
< sex ></ sex >
< age >18 </ age >
< email >xiaowang@163.com </ email >
< birthday >1987-06-08 </ birthday >
< memo >好学生 </ memo >
</ student >
< student id ="4" group ="4" >
< name >小张 </ name >
< sex ></ sex >
< age >18 </ age >
< email >xiaozhang@163.com </ email >
< birthday >1987-06-08 </ birthday >
< memo >好学生 </ memo >
</ student >
< student id ="5" group ="5" >
< name >小明 </ name >
< sex ></ sex >
< age >18 </ age >
< email >xiaoming@163.com </ email >
< birthday >1987-06-08 </ birthday >
< memo >好学生 </ memo >
</ student >
</ root >

Xml对应的实体bean文件:

packagecom.parsexml.entity;

public classStudent{

private intid;
private intgroup;
privateStringname;
privateStringsex;
private intage;
privateStringemail;
privateStringmemo;
privateStringbirthday;
public intgetId(){
returnid;
}
public voidsetId( intid){
this.id=id;
}
public intgetGroup(){
returngroup;
}
public voidsetGroup( intgroup){
this.group=group;
}
publicStringgetName(){
returnname;
}
public voidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
public voidsetSex(Stringsex){
this.sex=sex;
}
public intgetAge(){
returnage;
}
public voidsetAge( intage){
this.age=age;
}
publicStringgetEmail(){
returnemail;
}
public voidsetEmail(Stringemail){
this.email=email;
}
publicStringgetMemo(){
returnmemo;
}
public voidsetMemo(Stringmemo){
this.memo=memo;
}
publicStringgetBirthday(){
returnbirthday;
}
public voidsetBirthday(Stringbirthday){
this.birthday=birthday;
}

}

Pull解析代码

packagecom.parsexml;

importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;

importorg.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserException;
importorg.xmlpull.v1.XmlPullParserFactory;

importcom.parsexml.entity.Student;

public classPullParseXml{


publicList<Student>PullParseXML(){

List<Student>list= null;
Studentstudent= null;

// 构建XmlPullParserFactory
try{
XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance();
// 获取XmlPullParser的实例
XmlPullParserxmlPullParser=pullParserFactory.newPullParser();
// 设置输入流xml文件
xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"),"UTF-8");

// 开始
inteventType=xmlPullParser.getEventType();

try{
while(eventType!=XmlPullParser.END_DOCUMENT){
StringnodeName=xmlPullParser.getName();
switch(eventType){
// 文档开始
caseXmlPullParser.START_DOCUMENT:
list= newArrayList<Student>();
break;
// 开始节点
caseXmlPullParser.START_TAG:
// 判断如果其实节点为student
if("student".equals(nodeName)){
// 实例化student对象
student= newStudent();
// 设置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;
// 结束节点
caseXmlPullParser.END_TAG:
if("student".equals(nodeName)){
list.add(student);
student= null;
}
break;
default:
break;
}
eventType=xmlPullParser.next();
}
} catch(NumberFormatExceptione){
e.printStackTrace();
} catch(IOExceptione){
e.printStackTrace();
}
} catch(XmlPullParserExceptione){
e.printStackTrace();
}

returnlist;
}

public static voidmain(String[]args){
List<Student>list= newPullParseXml().PullParseXML();
for(Studentstudent: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下

效果图:

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. 手把手带你搭建 Elasticsearch 集群
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. 将Outlook.com添加到Android设备
  7. Android(安卓)的EditText实现不可编辑
  8. Android培训班(19)
  9. Android(安卓)Studio项目混淆后输出的文件所在位置

随机推荐

  1. How to edit the init.rc in android
  2. android orientationchange的问题
  3. 2011.09.26(5)——— android sample之Note
  4. 布局技巧:使用ViewStub
  5. [原创] Android(安卓)SDK 安装全记录
  6. Eclipse中使用Ant打Android包报错及解决
  7. Android(安卓)socket编程要点
  8. Android里把Dialog设置为全屏的方法
  9. Android(安卓)JetPack——DataBinding
  10. android中使用SurfaceView做视频播放器--