ROME解析RSS(代码)

Java代码
  1.   
  2.   
  3.   
  4. package org.zjut.romefunction;   
  5.   
  6. /**  
  7.  * this class is parse the rss and  
  8.  * return a Feed for other classes use;  
  9.  *   
  10.  * @autor xuhaimin  
  11.  *   
  12.  */  
  13. import java.io.IOException;   
  14. import java.net.MalformedURLException;   
  15. import java.net.URL;   
  16. import java.util.HashSet;   
  17. import java.util.List;   
  18. import java.util.Set;   
  19.   
  20. import org.zjut.PO.Category;   
  21. import org.zjut.PO.Feed;   
  22. import org.zjut.PO.Item;   
  23. import org.zjut.PO.Rss;   
  24.   
  25. import com.sun.syndication.feed.synd.SyndEntry;   
  26. import com.sun.syndication.feed.synd.SyndFeed;   
  27. import com.sun.syndication.io.FeedException;   
  28. import com.sun.syndication.io.SyndFeedInput;   
  29. import com.sun.syndication.io.XmlReader;   
  30.   
  31. public class ParseRss {   
  32.     URL feedUrl;   
  33.   
  34.     SyndFeed feed;   
  35.   
  36.     /**  
  37.      * @author xuhaimin  
  38.      * @param rss  
  39.      * @return Feed 解析RSS 得到Feed;  
  40.      */  
  41.     public Feed parse(Rss rss) {   
  42.   
  43.         Category category = rss.getCategory();   
  44.   
  45.         Feed feed = new Feed();   
  46.         Set<Item> items = new HashSet<Item>();   
  47.         SyndFeed synfeed = getSyndFeed(rss);   
  48.   
  49.         String title = synfeed.getTitle();   
  50.         System.out.println(title);   
  51.         String url = synfeed.getLink();   
  52.         System.out.println(url);   
  53.         List entries = synfeed.getEntries();   
  54.         for (int i = 0; i < entries.size(); i++) {   
  55.   
  56.             SyndEntry entry = (SyndEntry) entries.get(i);   
  57.             System.out.println("pubdate is null?????"  
  58.                     + entry.getPublishedDate());   
  59.             System.out.println("entry 的title 是%%%%%%%%%5" + entry.getTitle());   
  60.             Item item = new org.zjut.PO.Item();   
  61.             item.setTitle(entry.getTitle());   
  62.             String description = entry.getDescription().getValue().replaceAll(   
  63.                     "<[.[^<]]*>""");   
  64.             if (description == null || description.equals(""))   
  65.                 item.setDescription("对不起,没有该新闻的描述");   
  66.             item.setDescription(description);   
  67.             item.setAuthor(entry.getAuthor());   
  68.             item.setSource("");   
  69.   
  70.             item.setPubDate(entry.getPublishedDate());   
  71.             item.setLink(entry.getLink());   
  72.             item.setFeed(feed);   
  73.   
  74.             // item.setOnclick(onclick);   
  75.   
  76.             items.add(item);   
  77.   
  78.         }   
  79.         feed.setCategory(category);   
  80.         feed.setTitle(title);   
  81.         feed.setUrl(url);   
  82.         feed.setItems(items);   
  83.   
  84.         return feed;   
  85.   
  86.     }   
  87.   
  88.     /**  
  89.      *   
  90.      * @param rss  
  91.      * @return SyndFeed 根据RSS 得到一个RSS中间件  
  92.      */  
  93.     public SyndFeed getSyndFeed(Rss rss) {   
  94.         URL feedUrl = null;   
  95.         try {   
  96.             feedUrl = new URL(rss.getRssUrl());   
  97.         } catch (MalformedURLException e) {   
  98.             // TODO Auto-generated catch block   
  99.             e.printStackTrace();   
  100.         }   
  101.         SyndFeedInput input = new SyndFeedInput();   
  102.         SyndFeed synfeed = null;   
  103.         try {   
  104.             synfeed = input.build(new XmlReader(feedUrl));   
  105.         } catch (IllegalArgumentException e) {   
  106.             // TODO Auto-generated catch block   
  107.             e.printStackTrace();   
  108.         } catch (FeedException e) {   
  109.             // TODO Auto-generated catch block   
  110.             e.printStackTrace();   
  111.         } catch (IOException e) {   
  112.             // TODO Auto-generated catch block   
  113.             e.printStackTrace();   
  114.         }   
  115.         return synfeed;   
  116.   
  117.     }   
  118. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值