android中XmlPullParse解析xml的用法

首先我们先来了解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;

    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值