pull解析xml

weather.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<weather>

<city>

<name>上海</name>

<temp>5°</temp>

<pm>80</pm>

</city>

<city>

<name>北京</name>

<temp>-5°</temp>

<pm>800</pm>

</city>

<city>

<name>西安</name>

<temp>12°</temp>

<pm>60</pm>

</city>

</weather>

 

package com.test.pullparser;

 

public class CityBean {

private String name;

private String temp;

private String pm;

public String getName() {

    return name;

}

public void setName(String name) {

    this.name = name;

}

public String getTemp() {

    return temp;

}

public void setTemp(String temp) {

    this.temp = temp;

}

public String getPm() {

    return pm;

}

public void setPm(String pm) {

this.pm = pm;

}

}

package com.test.pullparser;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;

import android.os.Bundle;

import android.util.Xml;

import android.view.View;

public class MainActivity extends Activity {

    List<CityBeancityList = null;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

     public void click(View v){

    //拿到xml文件

    //獲取src文件夾下的文件

    InputStream inputStream = getClassLoader().getResourceAsStream("weather.xml");

    //使用pull解析器解析文件

    //獲取解析器對象

    XmlPullParser xp = Xml.newPullParser();

    //初始化

    try {

        CityBean city = null;

        xp.setInput(inputStream,"utf-8");

        /*獲取當前節點的事件類型,通過事件類型的判斷,可以知道當前節點是

          什麼節點,從而確定將要執行的操作

  int START_DOCUMENT = 0;//解析到了頭節點

  int END_DOCUMENT = 1;//解析結束

  int START_TAG = 2;//解析到開始標籤

  int END_TAG = 3;//解析到結束標籤

  int TEXT = 4;

  int CDSECT = 5;//CData

  int ENTITY_REF = 6;

  int IGNORABLE_WHITESPACE = 7;

  int PROCESSING_INSTRUCTION = 8;

  int COMMENT = 9;

  int DOCDECL = 10;

*/

        int type = xp.getEventType();

        while(type != XmlPullParser.END_DOCUMENT){

        //獲取下一個節點,並返回該節點的事件類型

        //根據節點的事件類型,要做不同的操作

            switch (type) {

                    case XmlPullParser.START_TAG:

                        //獲取當前節點的名字

                    if("weather".equals(xp.getName())){

                        //創建cityJavabean對象,用於存放city集合

                            cityList = new ArrayList<CityBean>();

                        }else if("city".equals(xp.getName())){

                        //創建cityJavabean對象

                             city = new CityBean();

                        }else if("name".equals(xp.getName())){

                        try {

                                String name = xp.nextText();

                                city.setName(name);

                            } catch (IOException e) {

                                        e.printStackTrace();

                            }

                      }

                    else if("temp".equals(xp.getName())){

                        try {

                                String temp = xp.nextText();

                                    city.setTemp(temp);

                            } catch (IOException e) {

                                e.printStackTrace();

                                    }

                       }

                    else if("pm".equals(xp.getName())){

                        try {

                                String pm = xp.nextText();

                                city.setPm(pm);

                            } catch (IOException e) {

                                e.printStackTrace();

                        }

        }

             break;

        case XmlPullParser.END_TAG:

        if("city".equals(xp.getName())){

                //city javabean放入集合中

                cityList.add(city);
        }

                break;

        default:

               break;

        }

        }

        } catch (XmlPullParserException e) {

        e.printStackTrace();

    }

    }

}

發佈了70 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章