xmlpull解析XML

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

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下 

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值