XmlUtils解析工具类

本文详细介绍了一种使用XMLPullParser解析XML新闻数据的方法,通过创建News类的JavaBean,解析XML中的title、description、image等标签,并将数据封装到News对象中,最后存储到List集合。该方法适用于Android平台的新闻客户端开发。

1,使用注意事项:

【1】创造对应的JavaBean 

 

【2】写出对应的成员变量直接生成set ,get 方法

 

【2】解析

package com.itheima.newsclient;



import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;



import org.xmlpull.v1.XmlPullParser;



import android.util.Xml;



public class NewsXmlUtils {



    // 解析xml 把解析的数据封装到集合

    public static List<News> parserXml(InputStream in) {

        List<News> lists = null;

        News news = null;

        try {

            // [1]获取xmlpullparser解析器的实例

            XmlPullParser parser = Xml.newPullParser();

            // [2]设置要解析的xml文件

            parser.setInput(in, "utf-8");

            // [3]获取要解析的事件类型

            int eventType = parser.getEventType();

            // [4]把xml所有的数据都解析出来

            while (eventType != XmlPullParser.END_DOCUMENT) {

                // [5]具体判断一下到底解析的是开始标签还是结束标签

                switch (eventType) {

                case XmlPullParser.START_TAG:  //代表解析的是所有开始标签

                    //[5.1]具体判断一下到底解析的是哪个开始标签

                    if ("channel".equals(parser.getName())) {

                        //[5.2]解析到这个标签 创建一个集合对象

                        lists = new ArrayList<News>();

                    }else if("item".equals(parser.getName())){

                        //[5.3]创建bean对象

                        news = new News();

                    }else if("title".equals(parser.getName())){

                        //[5.4]把title标签对应的内容解析出来存到bean里

                        news.setTitle(parser.nextText());

                        

                    }else if("description".equals(parser.getName())){

                        //[5.5]把description标签对应的内容解析出来存到bean里

                        news.setDescription(parser.nextText());

                        

                    }else if("image".equals(parser.getName())){

                        //[5.6]把image 标签对应的内容解析出来存到bean里

                        news.setImagepath(parser.nextText());

                        

                    }else if("type".equals(parser.getName())){

                        //[5.7]把type 标签对应的内容解析出来存到bean里

                        news.setType(parser.nextText());

                        

                    }else if("comment".equals(parser.getName())){

                        //[5.8]把comment 标签对应的内容解析出来存到bean里

                        news.setComment(parser.nextText());

                    }

                    break;

                case XmlPullParser.END_TAG:    //代表解析的是结束标签

                    if ("item".equals(parser.getName())) {

                        //把bean加入到集合

                        lists.add(news);

                    }

                    break;

                }

                // [6]不停的解析

                eventType = parser.next();

            }

            return lists;

        } catch (Exception e) {

            e.printStackTrace();

            return null;

        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值