android平台使用pull方式解析xml檔案,androidpull

來源:互聯網
上載者:User

android平台使用pull方式解析xml檔案,androidpull

android解析XML      ---------------------------基礎要像磐石

在android平台上可以使用SAX、DOM和內建的Pull解析器解析xml檔案,本文主要介紹使用pull方式解析xml。pull解析器的運行方式和SAX解析器相似,他也有開始元素和結束元素事件,並且可以迴圈解析。可以使用nextText()方法擷取Text類型元素的值。

下面是將要解析的XML檔案,將此xml檔案存放在assets目錄下。

<?xml version="1.0" encoding="utf-8"?><info city='3'>    <name>深圳</name>    <temp>28℃</temp>    <weather>多雲</weather>    <msg>天氣適宜, 穿個比基尼!</msg></info>

建立一個javabean來存放解析出來的資料,建立類WeatherInfo,如下

public class WeatherInfo {    private String name;    private String temp;    private String weather;    private String msg;    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 getWeather() {        return weather;    }    public void setWeather(String weather) {        this.weather = weather;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    @Override    public String toString() {        return "[name=" + name + ", temp=" + temp + ", weather="                + weather + ", msg=" + msg + "]";    }    }

 

下面開始解析

       //Context上下文,儲存當前應用程式,系統資源和配置etc        AssetManager am=this.getAssets();                try {          InputStream is=am.open("weather.xml");           //1,建立xml解析器            XmlPullParser parser=Xml.newPullParser();           //2,初始化解析器,設定要解析的流資料,並設定編碼方式            parser.setInput(is,"utf-8");            //3,迴圈解析            int type=parser.getEventType();                  WeatherInfo info=new WeatherInfo();            while(type!=XmlPullParser.END_DOCUMENT){                //如果是開始標籤                if(type==XmlPullParser.START_TAG){                    if("name".equals(parser.getName())){                        String name=parser.nextText();//擷取文本資料                            info.setName(name);                    }else if("temp".equals(parser.getName())){                        info.setTemp(parser.nextText());                    }else if("weather".equals(parser.getName())){                        info.setWeather(parser.nextText());                    }else if("msg".equals(parser.getName())){                        info.setMsg(parser.nextText());                    }                }                //讓解析器移動到下一個               type=parser.next();                //關閉流               is.close();
             tv_weather.setText(info.toString());           }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }

Pull解析器的工作方式為允許應用程式代碼主動從解析器中擷取事件,正因為是主動擷取事件,因此可以隨時跳出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.