Android中Pull解析器解析xml檔案案例

來源:互聯網
上載者:User

標籤:android   pull   xml   解析   

首先

準備一個供解析的xml檔案,這裡我們假定要解析的檔案名稱為person.xml,檔案的具體內容為:

<?xml version="1.0" encoding="utf-8"?><persons>    <person id="23">        <name>liming</name>        <age>23</age>    </person></persons>

接下來寫一個person的JavaBean:

package com.yangzi.domain;public class Person {    private int id;    private String name;    private int age;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";    }}
然後

是業務類的編寫:

package com.yangzi.service;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;import com.yangzi.domain.Person;public class PersonService {    public static List<Person> getPersons(InputStream xml) throws Exception {        List<Person> persons = null;        Person person = null;        //得到xmlpull解析器        XmlPullParser pullParser = Xml.newPullParser();        //設置解析器要解析的內容,和編碼方式        pullParser.setInput(xml,"utf-8");        //迴圈讀取xml檔案的節點        int event = pullParser.getEventType();//得到xml檔案中的一個節點        while(event != XmlPullParser.END_DOCUMENT){            switch (event) {            //xml檔案開始節點,開始節點一般做資料的初始化            case XmlPullParser.START_DOCUMENT:                persons = new ArrayList<Person>();                break;            //若為開始節點            case XmlPullParser.START_TAG:                //若為person節點                if("person".equals(pullParser.getName())){                    //得到id                    person = new Person();                    //int id = Integer.parseInt(pullParser.getAttributeValue(0));                    //int id = new Integer(pullParser.getAttributeValue(0));                    int id = Integer.valueOf(pullParser.getAttributeValue(0));                    person.setId(id);                }                //若為名位元組點                if("name".equals(pullParser.getName())){                    String name = pullParser.nextText();                    person.setName(name);                }                //若為年齡節點                if("age".equals(pullParser.getName())){                    //int age = Integer.parseInt(pullParser.nextText());                    //int age = new Integer(pullParser.nextText());                    int age = Integer.valueOf(pullParser.nextText());                    person.setAge(age);                }                break;            case XmlPullParser.END_TAG:                if("person".equals(pullParser.getName())){                    persons.add(person);                    person = null;                }                break;            }            event = pullParser.next();//讀取下一個節點        }        return persons;    }}
接下來

就可以寫測試類別對其進行測試了:

package com.yangzi.test;import java.io.InputStream;import java.util.List;import android.test.AndroidTestCase;import android.util.Log;import com.yangzi.domain.Person;import com.yangzi.service.PersonService;public class PersonServiceTest extends AndroidTestCase {    private static final String TAG = "PersonServiceTest";    public void testPersons() throws Exception{        InputStream in = this.getClass().getClassLoader().getResourceAsStream("person.xml");        List<Person> persons = PersonService.getPersons(in);        for(Person per:persons){            Log.i(TAG, per.toString());        }    }}
在測試之前

要在項目資訊清單檔中引入測試環境:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"><application>.....<uses-library android:name="android.test.runner" /><!--注意放置的位置-->....</application>....<instrumentation        android:name="android.test.InstrumentationTestRunner"        android:targetPackage="com.yangzi.xml" /><!--注意放置的位置--></manifest>

ok,點擊testPersons方法,運行為Android Junit Test試試吧!

體會

根據業務類PersonService 的分析代碼,可以看出,在xml檔案中的並沒有進行操作,可以任意命名,也就是說,在解析xml檔案時可以直接提取自己想要的就行了,其他的不用操作。
自己的想法,不知道對否,請大神指正啊!

Android中Pull解析器解析xml檔案案例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.