Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android--使用XMLPull解析xml

Android--使用XMLPull解析xml

編輯:關於Android編程

在Android中極力推薦的xmlpull方式解析xml。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文件:

<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%2D%2D%3E-->
<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 PullParseXML(){
        
        List 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();
                        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 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下

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved