android中XmlPullParse解析xml的用法

来源:互联网 发布:剑网三喵姐捏脸数据 编辑:程序博客网 时间:2024/06/06 20:40

首先我们先来了解XmlPullParse代码读取所代表的含义.

   读取到xml的声明返回      START_DOCUMENT; 
   读取到xml的结束返回        END_DOCUMENT ; 
   读取到xml的开始标签返回 START_TAG 
   读取到xml的结束标签返回END_TAG 
   读取到xml的文本返回       TEXT 

返回值为int类型,其中他们所代表的值为

int START_DOCUMENT = 0 ; //xml的声明返回,当导航到XmlPullParser.START_DOCUMENT,可以不做处理,当然你可以实例化集合对象等等。int END_DOCUMENT = 1; //xml的结束返回,int START_TAG = 2;  //开始标签(如果你不懂什么是开始标签,那就百度)int END_TAG = 3;   //结束标签int TEXT = 4;  //文本反悔


获取xml的事件类型为 XmlPullParse.getEventType()


下面讲一个 新闻客户端的事例


XML新闻

<?xml version="1.0" encoding="utf-8"?>  <channel>    <item>        <title>黄兴国最年轻副手被降级 曾是天津最年轻副市长</title>        <image>http://k.sinaimg.cn/n/default/transform/20170710/BOZU-fyhweih2497519.png/w200h134l50t1bf5.jpg</image>        <type>1</type>        <comment>163</comment>    </item>    <item>        <title>丽江遭殴打女游客与6名被告人达和解 撤回诉讼</title>        <image>http://k.sinaimg.cn/n/default/transform/20170710/dcrA-fyhweih2482078.jpg/w200h134l50t1d03.jpg</image>        <type>2</type>    </item>    <item>        <title>这段视频告诉你洪水有多么的吓人,只要几秒钟,可能就会命丧黄泉</title>        <image>http://k.sinaimg.cn/n/default/20170710/kyMF-fyhwret0616031.jpg/w200h134l50t1056.jpg</image>        <type>3</type>    </item>    <item>        <title>黄兴国最年轻副手被降级 曾是天津最年轻副市长</title>        <image>http://k.sinaimg.cn/n/default/transform/20170710/BOZU-fyhweih2497519.png/w200h134l50t1bf5.jpg</image>        <type>4</type>    </item>    <item>        <title>印要在边界打持久战?中方:证明印非法越界有预谋</title>        <image>http://k.sinaimg.cn/n/default/transform/20170710/ZLeO-fyhwehx5509942.jpg/w200h134l50t176b.jpg</image>        <type>5</type>    </item>    <item>        <title>马来西亚铁路订票网站标“中国台湾” 网友:没毛病</title>        <image>http://k.sinaimg.cn/n/default/transform/20170710/y9uN-fyhwefp0466238.png/w200h134l50t1392.jpg</image>        <type>6</type>        <comment>1630</comment>    </item></channel>


解析xml

package com.example.news;import android.util.Xml;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017\7\11 0011. */class XmlParserUtils {    public static List<News> parserXml(InputStream in) throws Exception {        List<News> newsLists =  null;        News news = null;        // [1]获取xml的解析器        XmlPullParser parser = Xml.newPullParser();        // [2]设置解析器 要解析的内容        parser.setInput(in, "utf-8");        // [3]获取解析的事件类型        int type = parser.getEventType();        // [4]不停的向下解析        while (type != XmlPullParser.END_DOCUMENT) {            // [5]具体判断一下解析的是开始节点 还是结束节点            switch (type) {                case XmlPullParser.START_TAG: // 解析开始节点                    //[6]具体判断一下解析的是哪个开始标签                    if("channel".equals(parser.getName())){                        //创建一个list集合                        newsLists = new ArrayList<News>();                    }else if ("item".equals(parser.getName())) {                        news = new News();                    }else if ("title".equals(parser.getName())) {                        news.setTitle(parser.nextText());                    }else if ("image".equals(parser.getName())) {                        news.setImage(parser.nextText());                    }else if ("type".equals(parser.getName())) {                        news.setType(parser.nextText());                    }else if ("comment".equals(parser.getName())) {                        news.setComment(parser.nextText());                    }                    break;                case XmlPullParser.END_TAG: // 解析结束标签                    if ("item".equals(parser.getName())) {                        //把javabean添加到 集合                        newsLists.add(news);                    }                    break;            }            // 不停的向下解析            type = parser.next();        }        return newsLists;    }}