开发RSS聚合的开源框架

原创 2006年06月20日 19:32:00

Rome基本介绍

                                                                

  最近公司要开发一个基与java的RSS阅读器,但是时间紧,在网上找个了一个开源的框架Rome,Rome并不是指罗马。不要误会,这里介绍的rome为一个开源java框架,可以在www.java.net上找到它,它是为RSS聚合而开发的一个框架,让你可以快速的开发基于javaRSS阅读,发布器,支持

  • RSS 0.91 Netscape

  • RSS 0.91 Userland

  • RSS 0.92

  • RSS 0.93

  • RSS 0.94

  • RSS 1.0

  • RSS 2.0

  • Atom 0.3

  • Atom 1.0

  等标准。你也可以自己扩展他的Module,让他解析你自己定义的XML格式。可以说它是一种用途很广的框架,在使用它之前。你必须下载JDOM开发包,因为它是用JDOM解析XML的。

Rome中主要包裹下面几个包

com.sun.syndication.feed

com.sun.syndication.feed.atom

与获得atom中各个节点的数据

com.sun.syndication.feed.module

modeule为各个数据模型层。可以自己扩展

com.sun.syndication.feed.rss

用与获得RSS中各个相对应的XML节点中的值

com.sun.syndication.feed.sse
com.sun.syndication.feed.synd

此包为写成RSS格式的XML设置个节点的属性
com.sun.syndication.io

此包为输入输出流。

它的UML

 

                                   1

下面是一个例子,功能是生成RSS格式的XML

public class FeedWriter {

    private static final String DATE_FORMAT = "yyyy-MM-dd";

    public static void main(String[] args) {
        boolean ok = false;
        if (args.length==2) {
            try {
                String feedType = args[0];
                String fileName = args[1];

                DateFormat dateParser = new SimpleDateFormat(DATE_FORMAT);

                SyndFeed feed = new SyndFeedImpl();  //feed流
                feed.setFeedType(feedType);                   //设置rss版本

                feed.setTitle("Sample Feed (created with Rome)");  //<title>设置标题
                feed.setLink(http://www.csdn.net);                               //<link>
                feed.setDescription("This feed has been created using Rome (Java syndication utilities");

                List entries = new ArrayList();
                SyndEntry entry;
                SyndContent description;

                entry = new SyndEntryImpl();                                 //子节点
                entry.setTitle("Rome v1.0");
                entry.setLink(http://www.csdn.net);
                entry.setPublishedDate(dateParser.parse("2004-06-08"));
                description = new SyndContentImpl();
                description.setType("text/plain");
                description.setValue("Initial release of Rome");
                entry.setDescription(description);
                entries.add(entry);

                entry = new SyndEntryImpl();
                entry.setTitle("Rome v2.0");
                entry.setLink(http://ww.csdn.net);
                entry.setPublishedDate(dateParser.parse("2004-06-16"));
                description = new SyndContentImpl();            //描述
                description.setType("text/xml");
                description.setValue("Bug fixes, <xml>XML</xml> minor API changes and some new features");
                entry.setDescription(description);
                entries.add(entry);

                entry = new SyndEntryImpl();
                entry.setTitle("Rome v3.0");
                entry.setLink("http://www.csdn.net");
                entry.setPublishedDate(dateParser.parse("2004-07-27"));
                description = new SyndContentImpl();
                description.setType("text/html");
                description.setValue("<p>More Bug fixes, mor API changes, some new features and some Unit testing</p>"+
                                     "<p>For details check the <a href=/"http://www.csdn.net/">Changes Log</a></p>");
                entry.setDescription(description);
                entries.add(entry);

                feed.setEntries(entries);                             //设置子节点

                Writer writer = new FileWriter(fileName);
                SyndFeedOutput output = new SyndFeedOutput();
                output.output(feed,writer);                        //写到文件中去
              
                writer.close();

                System.out.println("The feed has been written to the file ["+fileName+"]");

                ok = true;
            }
            catch (Exception ex) {
                ex.printStackTrace();
                System.out.println("ERROR: "+ex.getMessage());
            }
        }

        if (!ok) {
            System.out.println();
            System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file.");
            System.out.println("The first parameter must be the syndication format for the feed");
            System.out.println("  (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)");
            System.out.println("The second parameter must be the file name for the feed");
            System.out.println();
        }
    }

}
     就这么多了。第一次写blog写的不好。大家不要砸砖头:)

用聚合数据API快速写出小程序

利用聚合数据API快速写出小程序,过程简单。 1、申请小程序账号 2、进入开发 3、调用API。比如“苏州实时公交”小程序,选择的是苏州实时公交API。  苏州实时公交API文档:https:...
  • ishxiao
  • ishxiao
  • 2017年01月10日 14:26
  • 2572

疯狂的Web应用开源项目

下面是一个Web应用的开源列表。没什么可说的,太疯狂了。尤其是Web 2.0那一堆。我不知道你怎么想,有些开源项目的源码写得挺不好的,尤其是性能方面。或许你会以为改一改他们就可以成为为自己所用,不过,...
  • qk0923
  • qk0923
  • 2015年01月13日 18:48
  • 1240

几款移动跨平台App开发框架比较

整理目前流行的跨平台WebApp开发技术的特点,仅供参考。 每个框架几乎都包含以下特性: 使用 HTML5 + CSS + JavaScript 开发跨平台重用代码丰富的UI库提供访问设备...
  • jingwen3699
  • jingwen3699
  • 2017年03月31日 11:11
  • 8435

RSS新闻聚合器 有详细的功能 需要VS2008环境

  • 2010年05月19日 17:24
  • 7.99MB
  • 下载

RSS聚合系统Gregarius修改版

  • 2006年06月26日 09:51
  • 506KB
  • 下载

聚合新闻(RSS)阅读器

  • 2006年01月13日 09:51
  • 808KB
  • 下载

ReadWorld (RSS聚合新闻阅读器)

  • 2006年01月13日 09:51
  • 712KB
  • 下载

Android应用源码SimpleReader-rss聚合阅读器

  • 2014年04月24日 12:23
  • 6MB
  • 下载

崔克俊:大规模进行RSS聚合和网站下载在科学研究中的初步应用

  • 2014年05月29日 14:08
  • 3.78MB
  • 下载

SimpleReader-rss聚合阅读器Android应用源码

  • 2015年03月05日 19:47
  • 6MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发RSS聚合的开源框架
举报原因:
原因补充:

(最多只允许输入30个字)