`
foryougeljh
  • 浏览: 116377 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rome实现rss订阅与发布

 
阅读更多
1. 什么是RSS
RSS也叫聚合RSS,是在线共享内容的一种简易方式(也叫聚合内容, 简易供稿,Really Simple Syndication(真正简单的聚合 ))。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新. RSS是XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W3C网站上。拿一个新闻网站来说,如果这个网站使用了RSS技术,也即表示这个网站按照RSS标准将其新闻罗列出来,生成一个 RSS文件通常称为(RSS Feed,其实也就是一个*.xml文件)。其他网站或个人就订阅该新闻网站的新闻 ,其实也就是读取了新闻网站提供的RSS文件,既然说是”订阅“即表示这个过程是动态的,即主要体现在新闻网站上的内容更新了,浏览者也同时得到了更新后 的内容。当然这要借助工具。

2. RSS用途
1) .订阅BLOG   
可以订阅工作中所需的技术文章,也可以订阅与你有共同爱好的作者的Blog,总之,对什么感兴趣就可以订什么。

2) 订阅新闻  
无论是奇闻怪事、明星消息、体坛风云,只要你想知道的,都可以订阅。 你再也不用一个网站一个网站,一个网页一个网页去逛了。只要这将你需要的内容订阅在一个RSS阅读器中,这些内容就会自动出现你的阅读器里,你也不必为了一个急切想知道的消息而不断的刷新网页,因为一旦有了更新,RSS阅读器就会自己通知你



3. RSS标准
1) 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 2.0代码样例
<!-- XML版本和字符集 -->
<?xml version="1.0"?>
  <!-- RSS版本 -->
  <rss version="2.0">
  <!-- 以下为频道信息及新闻列表 -->
  <channel>
   <!-- 频道总体信息:开始 -->
  <!-- 频道标题 -->
  <title>Lift Off News</title>
  <!-- 频道链接的总地址 -->
  <link>http://liftoff.msfc.nasa.gov/</link>
  <!-- 频道描述文字 -->
  <description>Liftoff to Space Exploration.</description>
  <!-- 频道使用的语言(zh-cn表示简体中文) -->
  <language>en-us</language>
  <!-- 频道发布的时间 -->
  <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
  <!-- 频道最后更新的时间-->
  <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
   <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <!-- 频道生成器 -->
  <generator>Weblog Editor 2.0</generator>
  <managingEditor>editor@example.com</managingEditor>
  <webMaster>webmaster@example.com</webMaster>
   <ttl>5</ttl>
  <!-- 频道总体信息:结束 -->
  <!-- 每条RSS新闻信息都包含在item节点中, -->
  <item>
  <!-- 新闻标题 -->
  <title>Star City</title>
  <!-- 新闻链接地址 -->
  <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
  <!-- 新闻内容简要描述 -->
  <description>How do Americans get ready to work with Russians aboard the
  International Space Station? They take a crash course in culture, language
  and protocol at Russia's Star City.
</description>
  <!-- 新闻发布时间 -->
  <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
  <!-- 新闻目录 -->
  <category>IT</category>
  <!-- 新闻作者 -->
  <author>bill</author>
  <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
   </item>
  <item>
  <title>Space Exploration</title>
  <link>http://liftoff.msfc.nasa.gov/</link>
  <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada
  will experience a partial eclipse of the Sun on Saturday, May 31st.
</description>
  <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>
  <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
</item>
<item>
  <title>The Engine That Does More</title>
  <link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>
  <description>Before man travels to Mars, NASA hopes to design new engines
  that will let us fly through the Solar System more quickly. The proposed
  VASIMR engine would do that.
</description>
  <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>
  <guid>http://www.zhanghangfeng.cn/rss.xml</guid>
</item>
  <item>
  <title>Astronauts' Dirty Laundry</title>
  <link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
<description>Compared to earlier spacecraft, the International Space
  Station has many luxuries, but laundry facilities are not one of them.
  Instead, astronauts have other options.</description>
<pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
</item>
</channel>
</rss>

ROME是一个基于Java的开源程序包。ROME提供了一组Atom/RSS工具集,以使得用Java可以更方便和快捷的来操作大部分 Syndication格式数据。目前最新版本为0.9,已经支持的格式包括:RSS 0.90, 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。

ROME包含了一组解析器和生成器,以使得在程序中不仅能够方便的解析各种格式的数据,也可以方便的生成出所指定格式的数据。ROME的解析器和生成器是配合使用的,解析器在解析完源数据后,会生成一个ROME提供的中间对象(SyndFeed),这个对象包括了源数据中的所有信息,然后生成器以这个对象(SyndFeed)作为媒介,输出成程序所指定的数据格式。
public class RomeTest {
private static String index = "http://rss.sina.com.cn/roll/sports/hot_roll.xml";
//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 static void main(String[] args){
read();
}

@SuppressWarnings("unchecked")
public static void read(){
try{
URL url = new URL(index);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(url));
List<SyndEntry> entryties = feed.getEntries();
for(SyndEntry entry:entryties){
System.out.println(feed.getFeedType());//rss类型
System.out.println(entry.getPublishedDate());//发布时间
System.out.println(entry.getAuthor());//作者
System.out.println(entry.getTitle());//标题
System.out.println(entry.getLink());//链接
}
}catch (Exception e) {
e.printStackTrace();
}

}

public static void write(){
// 构造一个SyndFeed新对象
SyndFeed feed = new SyndFeedImpl();
// 设置Feed类型
feed.setFeedType(RSS_TYPE);
// 设置Feed基本信息
feed.setTitle("测试Feed");
feed.setLink("http://www.thedevlog.com");
feed.setDescription("测试使用ROME来构造Feed数据");
// 构造Feed items列表
List<SyndEntry> entries = new ArrayList<SyndEntry>();
SyndEntry entry;
SyndContent description;
// 构造一个新的节点并添加到列表中
entry = new SyndEntryImpl();
entry.setTitle("ROME v1.0");
entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
entry.setPublishedDate(new Date());

description = new SyndContentImpl();
description.setType("text/plain");
description.setValue("Initial release of ROME");

entry.setDescription(description);
entries.add(entry);
// 设置更多的节点...
// 将节点列表赋给feed对象
feed.setEntries(entries);
// 输出feed
Writer writer;
try {
writer = new PrintWriter("./test.xml","UTF-8");
SyndFeedOutput output = new SyndFeedOutput();
output.output(feed, writer);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}


分享到:
评论

相关推荐

    rome 实现rss订阅,中文出错解决方法

    Rome是一个Java库,专门用于处理RSS和Atom feeds,帮助开发者实现RSS订阅功能。然而,在处理中文字符时,Rome可能会遇到编码问题,导致中文显示为乱码。本文将深入探讨如何解决使用Rome处理RSS订阅时遇到的中文出错...

    java实现rss的发布和订阅

    4. **RSS订阅**: 订阅RSS通常涉及到RSS阅读器,它可以定期检查更新并显示新内容。在服务器端,你可以提供一个RSS feed的URL,客户端可以通过HTTP GET请求获取这个URL的内容。Java的`HttpURLConnection`或第三方库...

    ROME + JDOM轻松实现RSS的操作

    总的来说,结合使用ROME和JDOM,我们可以轻松地处理RSS的读写操作,从而在Java应用程序中实现RSS订阅、发布和管理。这对于开发新闻聚合应用、博客平台或者其他需要集成RSS功能的系统非常有用。通过深入学习和实践,...

    rss实现新闻消息订阅.rar

    在本案例中,“rss实现新闻消息订阅.rar”是一个压缩包文件,其中可能包含了使用Java的Rome库来实现RSS订阅的示例代码和相关资源。 Rome是一个开源的Java库,专门用于处理RSS和Atom feeds。它提供了读取、写入以及...

    java使用Rome解析Rss的实例

    在IT行业中,RSS(Really Simple Syndication)是一种广泛用于发布新闻、博客和其他在线内容的格式。它允许用户订阅网站更新,而无需直接访问网站。Java作为一款强大的编程语言,提供了许多库来处理RSS数据,其中之...

    rome-1.0RC2rss解析

    2. **XML绑定**:Rome使用了JAXB(Java Architecture for XML Binding)来实现XML与Java对象之间的映射。这使得从XML到Java对象的转换变得简单,反之亦然。开发者只需要定义好对应的Java模型类,Rome就能自动进行...

    rss 订阅

    **RSS订阅**是一种在线内容发布和聚合机制,它允许用户订阅感兴趣的网站或博客的更新,无需直接访问每个站点。RSS(Really Simple Syndication)是一种XML格式,用于分享新闻、文章和其他内容。通过RSS订阅,用户...

    rome-1.0 jdom 第一个RSS发布实例

    标题中的“rome-1.0 jdom 第一个RSS发布实例”揭示了本次讨论的主要...通过学习和运行这个实例,开发者可以掌握RSS的生成流程,并将这一技能应用到自己的项目中,例如自动生成博客的RSS订阅源或者构建新闻聚合服务。

    RSS开源框架ROME1.0下载集合

    RSS(Really Simple Syndication)是一种用于发布和聚合网络内容的简单格式,常用于博客、新闻站点等,让用户能够方便地获取和订阅信息更新。在开发过程中,为了简化RSS处理,出现了各种开源框架,其中ROME(Really ...

    rss订阅包括解决中文出错问题

    在RSS订阅过程中,可能会遇到一个常见问题,那就是中文字符显示异常或者出现乱码。这个问题主要源于数据编码不兼容或者处理不当。本文将深入探讨RSS订阅的原理,以及如何解决中文字符出错的问题。 RSS(Really ...

    基于Rome做的Rss读和写

    综上所述,这个项目提供了基于Java和Rome库的RSS读写功能,使得开发者可以轻松地与RSS源交互。通过下载并导入Eclipse,用户可以查看和运行源代码,了解如何使用Rome库来处理RSS数据。这不仅是一个实用的工具,也是一...

    RSS.zip_Rome.jar_java r_java rss_rss feed jar_rss java

    他们可以了解如何使用Rome库来解析RSS feed,提取文章标题、内容、发布日期等信息,以及如何构建新的RSS feed发布到网络上。 在实际项目中,理解RSS feed的结构和Rome库的API至关重要。例如,`...

    rome,用于rss和atom提要的java库.zip

    ROME可以帮助开发者实现RSS/Atom订阅功能,例如定期检查feed更新,获取新条目,并将这些条目集成到自己的应用中。 5. **自定义和扩展** 由于RSS和Atom标准允许扩展,Rome提供了一种灵活的方式添加自定义元素和...

    jdom和rome1.0包

    RSS是Really Simple Syndication的缩写,是一种用于发布和订阅新闻、博客等更新的格式。“dome”可能是对DOM的误拼,暗示着这个包涉及到XML文档对象模型的使用。而“rome1.0”则指明了ROME库的具体版本,这通常是...

    java实现的Rss

    9. **RSS订阅**:实现RSS订阅功能意味着需要处理RSS feed的添加、删除和管理,以及跟踪用户的阅读历史,以便展示未读内容。 总之,Java实现RSS涉及XML处理、RSS规范理解、HTTP交互、数据绑定、并发编程等多个技术...

    java_rss.rar_EXML.jar _RSSLibJ _rome jar_rome.j

    总之,"java_rss.rar"提供的这三个库——EXML.jar、RSSLibJ和Rome,为Java开发人员提供了强大的工具,使他们能够轻松地进行RSS订阅和内容管理。无论你是要创建新的RSS feed,还是从现有源抓取和处理数据,这些库都能...

    Android Rss订阅源码Demo.rar

    本Demo旨在帮助开发者理解如何在Android平台上实现RSS订阅功能。RSS(Really Simple Syndication)是一种XML格式,用于发布和分发新闻、博客文章或其他在线内容。以下是对这个源码Demo的详细解析: 1. **RSS解析库...

    Android Rss订阅源码Demo.zip源码资源下载

    这个“Android Rss订阅源码Demo”是一个示例项目,它演示了如何在Android应用中实现RSS订阅功能。下面我们将详细探讨这个源码Demo中的关键知识点。 首先,我们需要了解RSS的基本概念。RSS是一种XML格式的文件,包含...

    rome-1.16.0.jar

    Rome解析RSS必备jar

    jdom+rome-0.9 jar包合集

    最后,使用ROME将这个JDOM结构转换成RSS feed对象,可以进一步保存为XML文件或直接发布到服务器。 总的来说,"jdom+rome-0.9 jar包合集"是一个包含处理XML和构建RSS feeds所需库的打包资源。无论是为了解析XML文档...

Global site tag (gtag.js) - Google Analytics