📄 -
字号:
2:RSS文件由一个 <channel>
元素及其子元素组成。除了频道内容本身之外,<channel>
<BR> 还以项的形式包含表示频道元数据的元素 —— 比如
<title>、<link> 和
<description>。<BR> 项通常是频道的主要部分,包含经常变化的内容。<BR>
3:频道(channel)用<channel>表示<BR> 频道一般有三个元素,提供关于频道本身的信息:<BR> <title>:频道或提要的名称。
<BR> <link>:与该频道关联的 Web 站点或者站点区域的 URL。
<BR> <description>:简要介绍该频道是做什么的。
<BR> 许多频道子元素都是可选的。常用的 <image>
元素包含三个必需的子元素:<BR> <url>:表示该频道的 GIF、JPEG
或 PNG 图像的 URL。 <BR> <title>:图象的描述。当频道以
HTML 呈现时,用作 HTML <image> 标签的 ALT 属性。
<BR> <link>:站点的 URL。如果频道以 HTML
呈现,该图像作为到这个站点的链接。 <BR> <image>
还有三个可选的子元素:<BR> <width>:数字,表示图象的像素宽度,最大值是
188,默认值为 88。
<BR> <height>:数字,表示图象的像素高度。最大值是
400,默认值为 31。
<BR> <description>:包含文本,在呈现时可以作为围绕着该图像形成的链接元素的
title 属性。
<BR> 此外还可以使用许多其他可选的频道元素。多数都是不言自明的:<BR> <language>:en-us
<BR> <copyright>:Copyright 2003, James
Lewin <BR> <managingEditor>:<A
href="mailto:dan@spam_me.com">dan@spam_me.com</A>
(Dan Deletekey) <BR> <webMaster>:<A
href="mailto:dan@spam_me.com">dan@spam_me.com</A>
(Dan Deletekey) <BR> <pubDate>:Sat, 15
Nov 2003 0:00:01 GMT
<BR> <lastBuildDate>:Sat, 15 Nov 2003
0:00:01 GMT <BR> <category>:ebusiness
<BR> <generator>:Your CMS 2.0
<BR> <docs>:<A
href="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</A>
<BR> <cloud>:允许进程注册为“cloud”,频道更新时通知它,为
RSS 提要实现了一种轻量级的发布-订阅协议。 <BR> <ttl>:存活时间
是一个数字,表示提要在刷新之前缓冲的分钟数。
<BR> <rating>:关于该频道的 PICS 评价。
<BR> <textInput>:定义可与频道一起显示的输入框。
<BR> <skipHours>:告诉聚集器哪些小时的更新可以忽略。
<BR> <skipDays>:告诉聚集器那一天的更新可以忽略。
<BR>
4:摘要(feed)用<item>表示,<item>的格式如下:<BR> 每个摘要通常包含三个元素:<BR> <title>:这是项的名称,在标准应用中被转换成
HTML 中的标题。 <BR> <link>:这是该项的 URL。title
通常作为一个链接,指向包含在 <link> 元素中的 URL。
<BR> <description>:通常作为 link 中所指向的 URL
的摘要或者补充。 <BR> 所有的元素都是可选的,但是一个项至少要么 包含一个
<title>,要么包含一个
<description>。<BR> 项还有其他一些可选的元素:<BR> <author>:作者的
e-mail 地址。 <BR> <category>:支持有组织的记录。
<BR> <comments>:关于项的注释页的 URL。
<BR> <enclosure>:支持和该项有关的媒体对象。
<BR> <guid>:唯一与该项联系在一起的永久性链接。
<BR> <pubDate>:该项是什么时候发布的。
<BR> <source>:该项来自哪个 RSS
频道,当<BR>四:主流java rss
lib及其评测:<BR> 主要有一下几种:<BR>
1:Rome: <A
href="http://wiki.java.net/bin/view/Javawsxml/Rome">http://wiki.java.net/bin/view/Javawsxml/Rome</A><BR> Rome是
java.net
上的一个开源项目,现在的版本是0.5。为什么叫Rome呢,按它的介绍上的说法,有个“条条大路通罗马”的意思,有些RSS的意味。Rome可能是
sun
公司从自己某个子项目中抽离出来的,package和类的命名就象j2sdk一样感觉规范。功能上支持RSS的所有版本及
Atom 0.3(Atom是和RSS类似的一种内容聚合的方式)。Rome
本身是提供API和功能实现.<BR> 2:rssutils:
<A
href="http://gceclub.sun.com.cn/staticcontent/html/2004-04-22/rss.html">http://gceclub.sun.com.cn/staticcontent/html/2004-04-22/rss.html</A><BR> rssutils是一个工具包,sun
的 develope站点上有文章 RSS Utilities: A Tutorial
专门介绍用taglib
显示RSS内容,附带的可以下载这个工具包,但我从网上搜索不到它的出处,自然也无法看到它的源码。但从反编译的代码来看,也是sun公司内部高手所做,设计精巧,代码简练。实现一个handler,用sax的方式解析xml内容,handler内部用反射和javabean的机制构造RSS元素对象并赋值。<BR>
3:rsslib4j: <A
href="http://sourceforge.net/projects/rsslib4j">http://sourceforge.net/projects/rsslib4j</A><BR> rsslib4j
是 sourceforget 上的项目,同样支持所有RSS版本。
<BR>
4:rsslibj:http://enigmastation.com/rsslibj/<BR>
5:总结<BR> Rome: <BR> 优 -
1)可扩展性好,有前途。2)功能强大,除了用来解析RSS,还可以聚合和构造RSS。<BR> 劣
- 1)兼容性待加强,2)绑定jdom。<BR> rssutils:
<BR> 优 - 1)代码设计精妙,值得学习。2)附带 taglib 实现,直接可在
jsp 中应用。<BR> 劣 - 1)没有源码。 2)兼容性有待加强。
3)功能较弱,只能用来解析RSS,没有聚合和构造RSS功能。<BR> rsslib4j:<BR> 优
- 1)简单有效,体积小。2)兼容性不错。<BR> 劣 -
1)有小bug。2)功能较弱,只能用来解析RSS,没有聚合和构造RSS功能。<BR> rsslibj:<BR> 优
- 1)简单有效,体积小,才25K。2)能解析和生成RSS(动态和静态)<BR> 劣 -
1)有小bug。2)版本很久没有更新了,陈旧.</DIV>
<DIV>五:选择ROME作为RSS实现工具<BR> 在官网<A
href="http://wiki.java.net/bin/view/Javawsxml/Rome">http://wiki.java.net/bin/view/Javawsxml/Rome</A>下载rome-0.8.jar,<BR> rome用到了jdom1.0,下载地址:http://www.jdom.org<BR> rome支持:rss_0.9
<BR> rss_0.91 <BR>
rss_0.92 <BR> rss_0.93
<BR> rss_0.94 <BR> rss_1.0
<BR> rss_2.0 <BR> atom_0.3
<BR> atom_1.0
<BR> 生成RSS类新需要在程序中指定,如:rss_2.0<BR>六:包结构<BR> com.sun.syndication.feed 提供RSS
and Atom
beans的父类<BR> com.sun.syndication.feed.atom 提供实现Atom
feeds核心元素的beans<BR> com.sun.syndication.feed.module
提供处理聚合modules的beans<BR> com.sun.syndication.feed.rss 提供实现Rss
feeds核心元素的beans<BR> com.sun.syndication.feed.synd 我们主要用的就是这个包,SyndFeed
and SyndEntryImpl
<BR> com.sun.syndication.io 提供对读取和分析feeds的输入和输出<BR>七:实例:</DIV>
<DIV>1:读取远端url的rss,然后输出到控制台:<BR>/**<BR> *
关键代码:<BR> * SyndFeedInput input = new
SyndFeedInput();<BR> * SyndFeed feed =
input.build(new
XmlReader(feedUrl));<BR> */</DIV>
<DIV>package com.sun.syndication.samples;</DIV>
<DIV>import
com.sun.syndication.feed.synd.SyndFeed;<BR>import
com.sun.syndication.io.SyndFeedInput;<BR>import
com.sun.syndication.io.XmlReader;<BR>import
java.net.URL;</DIV>
<DIV>/**<BR> * It Reads and prints any
RSS/Atom feed type.<BR> */<BR>public class
FeedReader {</DIV>
<DIV> public static void
main(String[] args)
{<BR>
boolean ok =
false;<BR>
if (args.length==0)
{<BR>
try
{<BR>
URL feedUrl = new URL("<A
href="http://seu.org.cn/bbs/rss.php">http://seu.org.cn/bbs/rss.php</A>");<BR> //SyndFeedInput:从远程读到xml结构的内容转成SyndFeedImpl实例<BR>
SyndFeedInput input = new
SyndFeedInput();<BR> //rome按SyndFeed类型生成rss和atom的实例,<BR> //SyndFeed是rss和atom实现类SyndFeedImpl的接口<BR>
SyndFeed feed = input.build(new
XmlReader(feedUrl));<BR> //打印到控制台<BR>
System.out.println(feed);<BR>
ok =
true;<BR>
}<BR>
catch (Exception ex)
{<BR>
ex.printStackTrace();<BR>
System.out.println("ERROR:
"+ex.getMessage());<BR>
}<BR>
}</DIV>
<DIV> if
(!ok)
{<BR>
System.out.println();<BR>
System.out.println("FeedReader reads and prints
any RSS/Atom feed
type.");<BR>
System.out.println("The first parameter must be
the URL of the feed to
read.");<BR>
System.out.println();<BR>
}<BR>
}<BR>}<BR>2:将多个远程RSS在本地聚集成一个RSS<BR>package
com.sun.syndication.samples;</DIV>
<DIV>import java.net.URL;<BR>import
java.io.InputStreamReader;<BR>import
java.io.PrintWriter;<BR>import
java.util.List;<BR>import
java.util.ArrayList;</DIV>
<DIV>import
com.sun.syndication.feed.synd.SyndFeed;<BR>import
com.sun.syndication.feed.synd.SyndFeedImpl;<BR>import
com.sun.syndication.io.SyndFeedOutput;<BR>import
com.sun.syndication.io.SyndFeedInput;<BR>import
com.sun.syndication.io.XmlReader;</DIV>
<DIV>/**<BR> * It aggregates a list of
RSS/Atom feeds (they can be of different
types)<BR> * into a single feed of the
specified type.<BR> * <p><BR> *
@author Alejandro
Abdelnur<BR> *<BR> */<BR>public class
FeedAggregator {</DIV>
<DIV> public static void
main(String[] args)
{<BR>
boolean ok =
false;<BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -