码迷,mamicode.com
首页 > 其他好文 > 详细

xml解析

时间:2016-05-10 18:27:09      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

本文讲的是访问服务器得到xml数据,然后解析xml数据保存到list集合中的过程

技术分享

NewsInfo.java

/**
 * 根据服务器返回的xml数据一个item的字段 也一个bean
 */
public class NewsInfo {

    private String title;
    private String description;
    private String image;
    private String type;
    private String comment;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    @Override
    public String toString() {
        return "NewsInfo [title=" + title + ", description=" + description
                + ", image=" + image + ", type=" + type + ", comment="
                + comment + "]";
    }
    
    
}

XmlToListUtil.java

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

public class XmlToListUtil {
    /**
     * 把服务器返回的xml数据解析到list集合中(以解析智慧北京新闻xml文件为例) NewsInfo:存放服务器返回的xml一个item中的字段信息
     */
    public static List parseNewsInfo(InputStream is) {
        // 建立一个存放bean的list集合
        List<NewsInfo> list = new ArrayList<NewsInfo>();
        // 解析xml文件
        try {
            // 1.创建xml解析器
            XmlPullParser parser = Xml.newPullParser();
            // 2.初始化解析器
            parser.setInput(is, "UTF-8");
            // 3.得到当前解析的事件类型
            int eventType = parser.getEventType();
            // 4.当不是文档末尾时,循环执行读取文件。
            // ps:先把集合清空
            NewsInfo info = null;
            while (eventType != XmlPullParser.END_DOCUMENT) {
                /**
                 * 执行读取操作 判断是否为元素的开始 当时元素的开始时,判断是什么元素开始。 . . .
                 * 当时元素结束时,判断是什么元素结束。
                 */
                switch (eventType) {
                // 判断是开始标签
                case XmlPullParser.START_TAG:
                    String name = parser.getName();// <item>
                    if ("item".equals(name)) {
                        info = new NewsInfo();
                    } else if ("title".equals(name)) {
                        String title = parser.nextText();
                        info.setTitle(title);
                    } else if ("description".equals(name)) {
                        String description = parser.nextText();
                        info.setDescription(description);
                    } else if ("image".equals(name)) {
                        String image = parser.nextText();
                        info.setImage(image);
                    } else if ("type".equals(name)) {
                        String newsType = parser.nextText();
                        info.setType(newsType);
                    } else if ("comment".equals(name)) {
                        String comment = parser.nextText();
                        info.setComment(comment);
                    }
                    break;
                case XmlPullParser.END_TAG:// 结束标签
                    String endName = parser.getName();
                    if ("item".equals(endName)) {
                        list.add(info);
                        info = null;
                    }
                    break;
                }
                // 重置type
                eventType = parser.next();

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list;

    }

}

待续

xml解析

标签:

原文地址:http://www.cnblogs.com/lj-103/p/5478665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!