论坛首页 Java企业应用论坛

Rome解析Rss

浏览 5220 次
锁定老帖子 主题:Rome解析Rss
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-12  
用Rome已经有好长时间啦,今天把自己的学习东西拿出来和大家一起分享下,有什么不足的地方还请指出:

下面是一个简单的对Rome进行解析的操作,使用JUnit进行测试,Rome文件可以自己下载,具体代码如下:

import java.net.URL;
import java.util.List;

import org.junit.Test;

import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEnclosure;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

public class TestParse {
 @Test
 public void parseRss() {
  String rss = "[url=http://news.baidu.com/n?cmd=1&class=civilnews&tn=rss&sub=0]http://news.baidu.com/n?cmd=1&class=civilnews&tn=rss&sub=0[/url]";
  try {
   URL url = new URL(rss);
   // 读取Rss源
   XmlReader reader = new XmlReader(url);
   System.out.println("Rss源的编码格式为:" + reader.getEncoding());
   SyndFeedInput input = new SyndFeedInput();
   // 得到SyndFeed对象,即得到Rss源里的所有信息
   SyndFeed feed = input.build(reader);
   // 得到Rss新闻中子项列表
   List entries = feed.getEntries();
   // 循环得到每个子项信息
   for (int i = 0; i < entries.size(); i++) {
    SyndEntry entry = (SyndEntry) entries.get(i);
    // 标题、连接地址、标题简介、时间是一个Rss源项最基本的组成部分
    System.out.println("标题:" + entry.getTitle());
    System.out.println("连接地址:" + entry.getLink());
    SyndContent description = entry.getDescription();
    System.out.println("标题简介:" + description.getValue());
    System.out.println("发布时间:" + entry.getPublishedDate());
    // 以下是Rss源可先的几个部分
    System.out.println("标题的作者:" + entry.getAuthor());
    // 此标题所属的范畴
    List categoryList = entry.getCategories();
    if (categoryList != null) {
     for (int m = 0; m < categoryList.size(); m++) {
      SyndCategory category = (SyndCategory) categoryList
        .get(m);
      System.out.println("此标题所属的范畴:" + category.getName());
     }
    }
    // 得到流媒体播放文件的信息列表
    List enclosureList = entry.getEnclosures();
    if (enclosureList != null) {
     for (int n = 0; n < enclosureList.size(); n++) {
      SyndEnclosure enclosure = (SyndEnclosure) enclosureList
        .get(n);
      System.out.println("流媒体播放文件:" + entry.getEnclosures());
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}



上面就是具体的代码,有什么不明白的地方或不合理的地方还请指出,会及时做出调整。
  • 使用的Jar文件包.rar (421.1 KB)
  • 描述: 里面包含三个Jar文件,只用把三个Jar放在自己的工程下就可以使用。
  • 下载次数: 772
   发表时间:2009-05-07  
请教个问题,通过你上边的代码,做一个JSP,然后部署到weblogic814下边,我将地址改成错误地址,同时多个人访问的时候,你看看是不是延迟很长时间?
0 请登录后投票
   发表时间:2009-05-29  
哦,兄弟你说的那个问题很正确,
URL url = new URL(rss);
URLConnection uc = (HttpURLConnection) url.openConnection();
uc.setRequestProperty("User-agent", "IE/6.0");
//设置超时
uc.setConnectTimeout(3000);
InputStream in = uc.getInputStream();

使用上面这段代码就可以解决那个会等待的问题啦,只要设置一个连接超时时间就可以啦。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics