A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© hejinzhong 中级黑马   /  2014-9-25 22:36  /  939 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hejinzhong 于 2014-9-25 22:41 编辑

  1. public class NewsParseService {

  2.         
  3.         // 利用pull解析xml文件的工具类
  4.         public static List<NewsItem> parseNewsItem(InputStream in) {

  5.                 try {
  6.                         // 用来存每个条目和存所有条目的容器
  7.                         NewsItem item = null;
  8.                         List<NewsItem> list = null;
  9.                         
  10.                         // 得到解析器
  11.                         XmlPullParser parser = Xml.newPullParser();
  12.                         parser.setInput(in, "UTF-8");
  13.                         
  14.                         //得到解析事件类型
  15.                         int event = parser.getEventType();
  16.                         
  17.                         // 只要没有解析到结尾,就继续循环
  18.                         while (event != XmlPullParser.END_DOCUMENT) {
  19.                                 
  20.                                 // 获得节点名字
  21.                                 String nodeName = parser.getName();
  22.                                 
  23.                                 //根据解析节点类型,进行相应处理
  24.                                 switch (event) {
  25.                                 
  26.                                 //根节点的开始,则建立一个List集合
  27.                                 case XmlPullParser.START_DOCUMENT:
  28.                                         list = new ArrayList<NewsItem>();
  29.                                         break;
  30.                                 // 开始一个标签
  31.                                 case XmlPullParser.START_TAG:
  32.                                         // 根据名字的不同,进行不同的封装
  33.                                         if ("item".equals(nodeName)) {
  34.                                                 item = new NewsItem();
  35.                                         }
  36.                                         if ("title".equals(nodeName)) {
  37.                                                 item.setTitle(parser.nextText());
  38.                                         }
  39.                                         if ("description".equals(nodeName)) {
  40.                                                 item.setDescription(parser.nextText());
  41.                                         }
  42.                                         if ("image".equals(nodeName)) {
  43.                                                 item.setImage(parser.nextText());
  44.                                         }
  45.                                         if ("type".equals(nodeName)) {
  46.                                                 item.setType(Integer.parseInt(parser.nextText()));
  47.                                         }
  48.                                         if ("comment".equals(nodeName)) {
  49.                                                 item.setComment(Integer.parseInt(parser.nextText()));
  50.                                         }
  51.                                         break;
  52.                                        
  53.                                 // 当解析玩一条,则添加到list中
  54.                                 case XmlPullParser.END_TAG:
  55.                                         if ("item".equals(nodeName)) {
  56.                                                 list.add(item);
  57.                                         }
  58.                                         break;
  59.                                 }
  60.                                 
  61.                                 // 记得每次循环完毕,将事件指向下一个
  62.                                 event = parser.next();
  63.                         }
  64.                         return list;
  65.                 } catch (Exception e) {
  66.                         throw new RuntimeException(e);
  67.                 }
  68.         }
  69. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马