- 浏览: 41159 次
- 性别:
- 来自: 大连
文章分类
RSS简介:
RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻和其他按顺序排列的网站,例如Blog。
一段项目的介绍可能包含新闻的全部介绍等。或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内容。网络用户可以在客户端借助于支持RSS的新闻聚合工具软件(例如SharpReader,NewzCrawler、FeedDemon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
网站提供RSS输出,有利于让用户发现网站内容的更新。
[NextPage]
相对于BLOG来说,RSS的知名度相应会低很多,而且至今还没有一个非常贴切的中文词汇,也许以后无需中文名,大家都习惯于直接叫RSS了。RSS之所以同BLOG一样会被认为是热门词汇的一个原因,个人推测,应该是许多分析人士认识到RSS将要对互联网内容的浏览方法所产生的巨大影响。
RSS是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用。 为了进一步介绍RSS的有关背景知识,下面摘录了2003年10月平文胜为时代营销撰写的有关RSS的介绍文章。仅供参考。网上此类介绍文章也不少,有兴趣的请到网上检索更多信息。
RSS简介 (时代营销 平文胜 2003-10-10)
RSS是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS应用在国外已经非常普遍,从个人博客(Blog)栏目、企业站点到世界级的门户都提供基于RSS的服务,如IBM公司站点的中文新闻RSS http://www.ibm.com/news/cn/zh/index.rss ,YAHOO站点的http://news.yahoo.com/rss ,微软MSDN站点的http://msdn.microsoft.com/aboutmsdn/rss.asp 等等。
1、 RSS的历史
那么RSS究竟代表什么呢?比较普遍的有两种说法,一种是“Rich Site Summary”或“RDF Site Summary”,另一种是“Really Simple Syndication”,之所以有这些分歧,需要从RSS发展的历史说起。
最初的0.90版本RSS是由Netscape公司设计的,目的是用来建立一个整合了各主要新闻站点内容的门户,但是0.90版本的RSS规范过于复杂,而一个简化的RSS 0.91版本也随着Netscape公司对该项目的放弃而于2000年暂停。
不久,一家专门从事博客写作软件开发的公司UserLand接手了RSS 0.91版本的发展,并把它作为其博客写作软件的基础功能之一继续开发,逐步推出了0.92、0.93和0.94版本。随着网络博客的流行,RSS作为一种基本的功能也被越来越多的网站和博客软件支持。
在UserLand公司接手并不断开发RSS的同时,很多的专业人士认识到需要通过一个第三方、非商业的组织,把RSS发展成为一个通用的规范,并进一步标准化。于是2001年一个联合小组在0.90版本RSS的开发原则下,以W3C新一代的语义网技术RDF(Resource Description Framework)为基础,对RSS进行了重新定义,发布RSS1.0,并将RSS定义为“RDF Site Summary”。但是这项工作没有与UserLand公司进行有效的沟通,UserLand公司也不承认RSS 1.0的有效性,并坚持按照自己的设想进一步开发出RSS的后续版本,到2002年9月发布了最新版本RSS 2.0,UserLand公司将RSS定义为“Really Simple Syndication”。
目前RSS已经分化为RSS 0.9x/2.0和RSS 1.0两个阵营,由于分歧的存在和RSS 0.9x/2.0的广泛应用现状,RSS 1.0还没有成为标准化组织的真正标准。
2、 RSS目前的版本和推荐
到目前为止,RSS共有七种版本,推荐使用的是RSS 1.0和RSS 2.0,对于一些基本的站点同步,也可以选用RSS 0.91。
3、 RSS的语法介绍
一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀。下面我们选择http://msdn.microsoft.com/visualc/rss.xml中的一部分作为例子简单说(略)
4、 RSS的联合(Syndication)和聚合(Aggregation)
发布一个RSS文件(一般称为RSS Feed)后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。而且一个网站联盟(比如专门讨论旅游的网站系列)也能通过互相调用彼此的RSS Feed,自动的显示网站联盟中其他站点上的最新信息,这就叫着RSS的联合。这种联合就导致一个站点的内容更新越及时、RSS Feed被调用的越多,该站点的知名度就会越高,从而形成一种良性循环。
而所谓RSS聚合,就是通过软件工具的方法从网络上搜集各种RSS Feed并在一个界面中提供给读者进行阅读。这些软件可以是在线的WEB工具,如http://my.netscape.com ,http://my.userland.com , http://www.xmltree.com ,http://www.moreover.com ,http://www.oreillynet.com/meerkat 等,也可以是下载到客户端安装的工具
5、 RSS的未来发展
随着越来越多的站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。相信很快我们就会看到大量基于RSS的专业门户、聚合站点和更精确的搜索引擎。
RSS类库:
1. Rome
Rome 是 java.net 上的一个开源项目,现在的版本是0.5。为什么叫Rome呢,按它的介绍上的说法,有个“条条大路通罗马”的意思,有些RSS的意味。Rome可能是 sun 公司从自己某个子项目中抽离出来的,package和类的命名就象j2sdk一样感觉规范。功能上支持RSS的所有版本及 Atom 0.3(Atom是和RSS类似的一种内容聚合的方式)。Rome 本身是提供API和功能实现,其下独立出一个 rome-fetcher 项目,专门用来读取RSS内容。正和我意啊。
参照 fetcher 上的范例,解析 RSS 相当简单,代码片断如下:
FeedFetcher fetcher = new HttpURLFeedFetcher();
SyndFeed feed = fetcher.retrieveFeed(feedUrl);
System.out.println(feedUrl + " has a title: " + new String(feed.getTitle().getBytes("iso8859-1"), "utf-8") + " and contains " + feed.getEntries().size() + " entries.");
for (Iterator iter = feed.getEntries().iterator(); iter.hasNext(); ) {
SyndEntry entry = (SyndEntry) iter.next();
System.out.println("" + entry.getTitle() + "[" + entry.getPublishedDate() + "]");
}
为什么用 new String(feed.getTitle().getBytes("iso8859-1"), "utf-8") 进行转码,是因为Rome来解析 新浪新闻 RSS的时候试图从 URLConnection 的 header 中得到编码信息,否则总是用 iso8859-1。而新浪的RSS response header 中不包含编码信息,所以要做一番转码。另外还有就是 entry.getPubDate() 也将返回null,因为Rome 用多种pattern 去试图解析时间信息,新浪的时间格式还是符合RFC822的,但是Rome 使用SimpleDateFormat 来解析时间,它忘记了一点,就是 SimpleDateFormat的解析是关联于 Locale 的,所以由于我本地locale是China,SimpleDateFormat的parse方法解析不出英文的时间字符。以上代码前加 Locale.setDefault(Locale.Englisth) 可以搞定,但总觉得不爽。
如果也不想转码的话,Rome 还提供了一个 XmlReader 的类,通过分析 header 和 xml 内容推断 encoding,修改 HttpURLFeedFetcher 的源码 :
// 改变 InputStreamReader , 换用 XmlReader
//InputStreamReader reader = new InputStreamReader(is, ResponseHandler.getCharacterEncoding(connection));
XmlReader reader = new XmlReader(connection);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(reader);
那么中文不用转码也能正确显示了,不过修改源码后我再解析 百度新闻 RSS 的时候,底层的JDOM却会抱错说xml 格式不正确。也许Rome的开发者也遇到过这样的问题,所以才没有使用 XmlReader。
2. rssutils
它是一个工具包,sun 的 develope站点上有文章 RSS Utilities: A Tutorial 专门介绍用taglib 显示RSS内容,附带的可以下载这个工具包,但我从网上搜索不到它的出处,自然也无法看到它的源码。但从反编译的代码来看,也是sun公司内部高手所做,设计精巧,代码简练。实现一个handler,用sax的方式解析xml内容,handler内部用反射和javabean的机制构造RSS元素对象并赋值。代码片断如下:
RssParser parser = new RssParserImpl();
Rss rss = parser.parse(new URL(url));
System.out.println(rss.getChannel().getTitle());
for (Iterator iter = rss.getChannel().getItems().iterator(); iter.hasNext();) {
Item item = (Item)iter.next();
System.out.println("" + item.getTitle() + " " + item.getPubDate());
}
如上所示,代码也是相当简单,没有转码的需求,时间也正确显示(因为根本没做分析,当字符串直接返回)。但是该工具包并非真正对外公布,代码中有些不严谨的地方,如System.out的输出,很不爽。而且如果 RSS 的 xml内容如果缺少部分不常用元素 ,它也会printStackTrace一大串,服了它了。另外还有一个大问题,就是当我用它解析 百度新闻 的时候,直接就报错:org.xml.sax.SAXParseException: 字符转换错误:“Unconvertible UTF-8 character beginning with 0xb0”。网上查了查,可能是 java 修改过的 UTF-8 和标准 UTF-8 些微不兼容导致。详情参看 Java 平台中的增补字符 一文。
3. rsslib4j
rsslib4j 是 sourceforget 上的项目,主页是 http://sourceforge.net/projects/rsslib4j,现在最新的版本是0.2,才0.2,可是开发状态却已经是稳定产品化了。同样支持所有RSS版本。
rsslib4j 解析 RSS 的方式和 rssutils 一样,我看了看源码,设计比较简单,代码可读性一般,大量使用if。代码片断如下:
RSSHandler hand = new RSSHandler();
RSSParser.parseXmlFile(new URL(url), hand, false);
RSSChannel ch = hand.getRSSChannel();
System.out.println(ch.toString());
LinkedList lst = hand.getRSSChannel().getItems();
for (int i = 0; i < lst.size(); i++) {
RSSItem itm = (RSSItem) lst.get(i);
System.out.println(itm.toString());
}
看起来也是相当清晰易懂,执行结果也和rssutils一样,不过用它来解析 百度新闻 却不会出现 rssutils 的utf-8编码错误,真是奇怪,两者都是调JAXP的 SAXParser 。不过它的代码也有bug,不能解析出 channel 的一些信息,查看源码,有点简单逻辑错误,修正后解决。想写封email给项目开发者可惜英文不行,通过cvs去commit一下也嫌麻烦,作罢。
总结
Rome:
优 - 1)可扩展性好,有前途。2)功能强大,除了用来解析RSS,还可以聚合和构造RSS。
劣 - 1)兼容性待加强,2)绑定jdom。
rssutils:
优 - 1)代码设计精妙,值得学习。2)附带 taglib 实现,直接可在 jsp 中应用。
劣 - 1)没有源码。 2)兼容性有待加强。 3)功能较弱,只能用来解析RSS,没有聚合和构造RSS功能。
rsslib4j:
优 - 1)简单有效,体积小。2)兼容性不错。
劣 - 1)有小bug。2)功能较弱,只能用来解析RSS,没有聚合和构造RSS功能。
发表评论
-
WAP/WJMS
2007-08-08 21:18 945不言而喻,移动商务需要传送无线数据,然而现有无线传送技术的效率 ... -
SSO(SIngle Sign-on)
2007-08-15 22:15 1004一、SSO(单点登陆)实现原理 1、概念:SSO的一种偏向技术 ... -
CMS(Content Management System)
2007-08-15 22:20 780什么是CMS CMS是Content M ... -
什么是CGI
2007-09-15 23:37 8461. 定义:CGI(Common Gateway Interf ... -
推技术(Push Technology)和拉技术(Pull Technology)
2007-09-15 23:40 1822推技术(Push Technology)和拉技术(Pull ... -
P2P
2007-09-15 23:42 931P2P(peer-to-peer),也称为对等网络技术,这是一 ... -
网络交易B2B, B2C
2007-09-15 23:46 795B2B(Business To Business)是企业与企业 ...
相关推荐
诸如showrss.karmorra.info和ezrss.it或自托管系列实例的网站都非常适合作为供稿源。 还包括一个称为“传输添加文件”的工具,用于批量添加种子文件。 正如用诗歌完成的那样,我将这段非常巧妙而浪漫的代码专门献给...
Android RSS Parser []() []() Library to parse RSS easily and efficiently. ... compile 'com.github.chatRG:RSS-parser:v0.1' } Usage Read the feed from the URL: URL url = new URL("http://example.c
ENT-edt-RSS-阅读器 0.0.1 使用 ENT RSS 提要(实际上是将 RSS 提要转换为 JSON)来促进时间表访问的工具。 服务器 要求 NodeJS 和模块 如何安装 下载存储库 在存储库中使用 npm install 客户 要求 网页浏览器 来自...
docker run -p 3000:3000 -it damoeb/rss-proxy 然后在浏览器中打开 。 JavaScript支持 rss-proxy在单独的damoeb/rss-proxy:js映像damoeb/rss-proxy:js支持动态damoeb/rss-proxy:js因为它具有1GB的很大空间。运行此...
毕业设计论文-IT计算机-[其他类别]网站RSS订阅功能插件RSSMaker JSP版 v1.0-源码.zip
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
恐龙RSS :sauropod: 一个简单,高效,开源的RSS阅读器服务 主要特征 :rocket: 简单高效 恐龙RSS :sauropod: 作为最低限度可行的产品而构建,新功能将添加到您的手中。 通过使用客户端-服务器体系结构,订阅源可以...
docker run --rm -v rss-firehose:/usr/src/app/public -it djdefi/rss-firehose docker run --name rss-nginx --rm -v rss-firehose:/usr/share/nginx/html:ro -p 8080:80 nginx:1.14.0-alpine 重新运行rss-...
己思是一个开源的在线 RSS 阅读服务,旨在为 IT 从业者提供一个优质的学习圈子。 功能特性 持续扩充的订阅源 为了确保内容质量,己思对订阅源有严格的筛选标准: 巨头公司的技术博客 技术大拿的博客 互联网名站的...
// Only load the class if it starts with "SimplePie" if (strpos($class, 'SimplePie') !== 0) { return; } $filename = $this->path . DIRECTORY_SEPARATOR . str_replace('_', ...
Shows the original site (you have to see it to believe it). Hides stories you don't want to read based on tags, keywords, authors, etc. Highlights stories you want to read, based on the same criteria....
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
•2D代码:QR代码,数据矩阵,阿兹台克代码,PDF 417•GS1 DataBar(RSS-14)*•EAN和UPC条码(*仅适用于Android)兼容性:Scan-IT to Office可与台式机上的Google Chrome和Google表格一起使用。进一步受支持的目标...
Android应用源码开发Demo,主要用于毕业设计学习。
Android应用源码开发Demo,主要用于毕业设计学习。
27. IT偏见录——陈佼的blog 十二月 5, 2007 28. Joel on Software 四月 2 29. Lifehacker 四月 4 30. 柴静 四月 4 31. 大眼仔~旭 四月 4 32. 糗事百科 四月 4 33. 网易头条新闻 四月 5 34. Engadget 中国版 ...
It is a client application for the RSS-Reader Tiny Tiny RSS, a PHP-based online feedreader which runs on your own webspace. It is accessible with any browser and even supports keyboard shortcuts ...
Rss it can tu watch rss.you can buy it.i m come ..
Chrome扩展程序和生产力工具,供软件开发人员浏览技术RSS提要并在文章网页上做笔记。 用法 git clone https://github.com/yijiaow/keep-it-wired.git 导航到项目根目录。 在.env文件中声明环境变量。 在您的终端...
RSS4000技术参数_IT项目管理运维服务体系构建方案运维规范范文模板、毕业设计