引用
1.RSS标准
RSS标准比较混乱,主要有以下3个系列
RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave Winer不承认其有效性。并于2002年9月独自把RSS升级到了2.0版本(Really Simple Syndication),并交由哈佛大学Technology at Harvard Law进行维护。
RSS 1.0 : 在RSS发展过程中,为使RSS成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的Resource Description Framework (RDF) 对RSS进行了重新定义,发布了RSS 1.0版,并把RSS定义为“RDF Site Summary”。现在RSS 1.0版由W3C联合小组维护。
Atom : Atom是一个项目的名字,主要是开发一个新的博客摘要格式以解决目前RSS存在的问题(混乱的版本号,不是一个真正的开放标准,表示方法的不一致,定义贫乏等等)。
2.如何实现RSS
RSS标准虽然混乱,但是其本质都是XML文档。你可以只使用notepad, 按照某个RSS标准, 手写一个xml, 并提供给客户端。
现在也有许多开源项目来提供RSS的解决方案。
Rome https://rome.dev.java.net/
RSSLibJ http://enigmastation.com/rsslibj/
RSSLib4J http://devzone.stealthp.org/cms/index.php?page=RSSLib4J
使用这些解决方案可以更方便的处理RSS.
3.用 Rome 实现 RSS 服务
目前Rome最新版本为rome-0.9. 本例是在Struts的Action中实现的RSS服务.
新建一个RssAction
java 代码
import other classes...
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedOutput;
public class RssAction extends DispatchAction {
private static final String MIME_TYPE = "application/xml; charset=UTF-8";
// Rome中RSS的可选标准
// rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0, atom_0.3
private static final String RSS_TYPE = "rss_2.0";
public ActionForward newsFeed(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
NewsFeedBA newsFeedBA = new NewsFeedBA();
newsFeedBA.doExecute();
outputRssFeed(response, newsFeedBA.getFeed());
return null;
}
public ActionForward blogFeed(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String uid = request.getParameter("userId");
BlogFeedBA blogFeedBA = new BlogFeedBA();
blogFeedBA.setUserId(uid);
blogFeedBA.doExecute();
outputRssFeed(response, blogFeedBA.getFeed());
return null;
}
//将SyndFeed写入HttpServletResponse
private boolean outputRssFeed(HttpServletResponse response, SyndFeed feed) {
boolean result = false;
feed.setFeedType(RSS_TYPE);
response.setContentType(MIME_TYPE);
SyndFeedOutput output = new SyndFeedOutput();
try {
output.output(feed, response.getWriter());
result = true;
} catch (IOException e) {
e.printStackTrace();
} catch (FeedException e) {
e.printStackTrace();
}
return result;
}
}
然后在业务逻辑中,查询数据库,用返回的数据组织相应的Feed.
java 代码
public SyndFeed createFeed(List news) {
SyndFeed feed = new SyndFeedImpl();
feed.setTitle("My RSS Service : news ");
feed.setLink("http://www.myHomePage.com");
feed.setDescription("My first RSS service .");
feed.setEntries(getEntries(news));
return feed;
}
private List getEntries(List news) {
List entries = new ArrayList();
SyndEntry entry;
SyndContent description;
for (NewsDTO dto : news) {
entry = new SyndEntryImpl();
entry.setTitle(dto.getTitle());
entry.setLink(dto.getLink());
entry.setPublishedDate(new Date());
description = new SyndContentImpl();
description.setType("text/html");
description.setValue(dto.getContent());
entry.setDescription(description);
entries.add(entry);
}
return entries;
}
在struts-config.xml中配置RssAction
xml 代码
<action path="/rss" type="com.web.action.RssAction"
parameter="method"
scope="request">
action>
启动Tomcat,并访问/rss.do?method=newsFeed 就可以得到新闻的RSS
访问/rss.do?method=blogFeed&userId=123 就可以得到123的blog的RSS了。
现在IE7和Opera都集成了RSS功能。
见:http://wangcheng.iteye.com/blog/53778
分享到:
相关推荐
Rome是一个Java库,它为创建、聚合和消费RSS和Atom feeds提供了一套API。这个库包括了RSS和Atom规范的模型类,以及解析和生成XML文档的工具。要使用Rome,你需要将其添加到你的项目依赖中。如果你使用的是Maven,...
Rome 1.0RC2是该项目的一个早期版本,主要提供了RSS和Atom feed的解析、创建和更新功能。在这个版本中,开发者可以利用它来读取、构建和修改RSS 2.0和Atom 1.0 feeds。以下是关于Rome 1.0RC2的关键知识点: 1. **...
本篇文章将详细介绍如何利用Java中的ROME库和JDOM库来轻松实现RSS的操作。 首先,让我们了解一下ROME库。ROME是一个开源的Java库,它为处理RSS和Atom feeds提供了一种简单的方法。它包含了RSS和Atom feed的解析、...
- **RSS阅读器**:使用ROME和rsslib4j,开发者可以创建自己的RSS阅读器应用,让用户能够订阅和管理多个RSS源,获取实时更新。 - **内容聚合**:可以利用这些库将不同来源的RSS feed聚合在一起,形成一个统一的信息流...
【标题】"基于Rome做的Rss读和写"涉及的核心技术是RSS(Really Simple Syndication)和Java的Rome库。RSS是一种用于发布和聚合新闻、博客、播客等在线内容的XML格式。它允许用户订阅感兴趣的网站,通过RSS阅读器获取...
Rome是Java社区中一个流行的RSS和Atom聚合库,它提供了一系列类和方法,用于解析、创建、修改RSS和Atom feeds。 描述中提到的“java相关RSS 部分资料已经生成代码和jar包”,意味着这个压缩包内不仅包含Rome库的jar...
1. **创建RSS Channel对象**:使用Rome库中的`RssChannel`类初始化一个新的RSS频道,设置必要的属性,如频道标题、描述和URL。 2. **添加Items**:向频道中添加`RssItem`对象,每个代表一个单独的RSS条目,包含标题...
Rome库提供了丰富的API,允许开发者轻松地创建、解析和操作RSS和Atom feed。 1. **RSS与Atom简介** RSS是一种XML格式,用于发布经常更新的内容,如博客文章、新闻标题等。RSS feed通常包含摘要、链接和发布日期等...
通过使用ROME,开发者可以轻松地从网站抓取和解析RSS feed,或者创建自己的RSS feed并发布到网络。 在描述中提到的“rome开发rss”,意味着这个压缩包可能包含了使用ROME库进行RSS开发的相关示例或代码。JDOM的提及...
- **创建RSS feeds**:通过使用RSSLibJ或Rome,可以轻松构建RSS feed的XML结构,定义标题、描述、链接、作者等元素。 - **解析RSS feeds**:从RSS源下载XML数据,然后使用库解析成Java对象,以便进一步处理和展示。 ...
使用ROME,你可以创建`RssChannel`或`AtomFeed`对象,添加`Item`或`Entry`,设置feed的各种属性,如标题、描述、链接等。同时,它也提供了从URL中抓取和解析RSS/Atom feed的能力,以及将已有的RSS/Atom对象转换成XML...
当你需要创建RSS feed或者从RSS源中提取信息时,ROME是非常有用的工具。 使用ROME,你可以执行以下任务: 1. **创建RSS Feed**:通过构建Feed、Item等对象,可以创建符合RSS规范的馈送结构。 2. **解析RSS Feed**:...
5. 如果需要,还可以使用ROME创建新的RSS Feed或更新已有的Feed。 在实际应用中,开发者可能会遇到的问题包括XML解析错误、RSS Feed格式不兼容、网络连接问题等,这些问题都需要通过良好的异常处理和错误排查技巧来...
- 创建一个简单的Java程序,导入Rome库,利用`SyndFeedInput`解析指定的RSS或Atom feed。 - 遍历`SyndFeed`的`entries`集合,输出每个条目的标题和链接,从而实现新闻的抓取和展示。 7. **最佳实践** - 在实际...
"rome-1.0.jar" 和 "rome.jar" 是两个这样的库,它们主要用于处理RSS(Really Simple Syndication)和Atom格式的数据,即新闻聚合和内容发布的标准。这些jar文件包含了处理这些格式的类和方法,使得开发者无需从头...
Rome库就是这样一个工具,它是一个Java库,专门用于RSS(Really Simple Syndication)和Atom feed的创建、解析和管理。这里的"rome-0.9.jar"是一个特定版本的Rome库的归档文件,通过它,开发者可以轻松地在Java应用...
使用Rome,开发者可以方便地创建一个RSS或Atom feed解析器,读取XML文件中的条目,或者创建新的feed并将其发布到网络上。例如,通过Rome,你可以实现以下功能: 1. 解析XML文件:使用`RomeFeedReader`类,可以读取...
要创建RSS feed,首先需要定义XML结构,这通常包括`<rss>`、`<channel>`和多个`<item>`元素。在Java中,可以使用DOM(Document Object Model)或者JAXB(Java Architecture for XML Binding)来构建XML文档。DOM...
标题中的"rome0.9"指的是Rome库的一个版本,该版本提供了对RSS 2.0规范的良好支持,同时也可以处理 Atom 1.0 格式,便于开发者创建、编辑和管理RSS和Atom feed。 Rome0.9包含以下主要功能: 1. **RSS和Atom Feed...