标签:
本文讲的是访问服务器得到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; } }
待续
标签:
原文地址:http://www.cnblogs.com/lj-103/p/5478665.html