本帖最后由 hejinzhong 于 2014-9-25 22:41 编辑
- public class NewsParseService {
-
- // 利用pull解析xml文件的工具类
- public static List<NewsItem> parseNewsItem(InputStream in) {
- try {
- // 用来存每个条目和存所有条目的容器
- NewsItem item = null;
- List<NewsItem> list = null;
-
- // 得到解析器
- XmlPullParser parser = Xml.newPullParser();
- parser.setInput(in, "UTF-8");
-
- //得到解析事件类型
- int event = parser.getEventType();
-
- // 只要没有解析到结尾,就继续循环
- while (event != XmlPullParser.END_DOCUMENT) {
-
- // 获得节点名字
- String nodeName = parser.getName();
-
- //根据解析节点类型,进行相应处理
- switch (event) {
-
- //根节点的开始,则建立一个List集合
- case XmlPullParser.START_DOCUMENT:
- list = new ArrayList<NewsItem>();
- break;
- // 开始一个标签
- case XmlPullParser.START_TAG:
- // 根据名字的不同,进行不同的封装
- if ("item".equals(nodeName)) {
- item = new NewsItem();
- }
- if ("title".equals(nodeName)) {
- item.setTitle(parser.nextText());
- }
- if ("description".equals(nodeName)) {
- item.setDescription(parser.nextText());
- }
- if ("image".equals(nodeName)) {
- item.setImage(parser.nextText());
- }
- if ("type".equals(nodeName)) {
- item.setType(Integer.parseInt(parser.nextText()));
- }
- if ("comment".equals(nodeName)) {
- item.setComment(Integer.parseInt(parser.nextText()));
- }
- break;
-
- // 当解析玩一条,则添加到list中
- case XmlPullParser.END_TAG:
- if ("item".equals(nodeName)) {
- list.add(item);
- }
- break;
- }
-
- // 记得每次循环完毕,将事件指向下一个
- event = parser.next();
- }
- return list;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
复制代码
|
|