RSS原理

RSS是在互联网上被广泛采用的内容包装和投递协议。网络用户可以在客户端借助于支持RSS的新闻工具软件,在不打开网站内容页面的情况下,阅读支持RSS输出的网站内容。内容提供者在其网站上发布相应的RSS文件,系统入口程序获取该RSS文件并把它提供给用户,用户使用相应的阅读工具软件来阅读该内容。

 

5.3.1  RSS的工作原理

网页以RSS的形式为其内容提供一个通过URL获得的摘要。RSS摘要文件包含新闻项,每一个RSS文件包含一个频道(Channel)。每个频道必须至少具备以下元素:Title(标题)、Description(对频道的简单介绍)、Link(导航到目标网页)和Language(频道语言)。每个频道由若干个Item(项)组成,每个项包含了一个URL、一个标题和一个摘要。RSS技术主要包含两个重要组件:RSS摘要和RSS阅读器。

以下是某个Blog的RSS语法,如代码清单5-1所示。

代码清单5-1  Blog的RSS语法

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback= "http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb. org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">  

<channel>

  <title>我的Blog</title>

  <description>与我自己的技术Blog相关联</description>

  <link>http://counter.csdn.net/pv.aspx?id=72</link>

  <dc:language>af</dc:language>

  <item>

  <title><!-- 项标题 --></title>

  <link><!-- 项 URL --></link>

  <description><!-- 简要描述 --></description>

  <!-- 可选的/可扩展的元素 -->

  </item>

  <item>

  <!-- 可多个<item>项目-->

  </item>

</channel>

RSS的工作原理如图5-2所示。

图5-2  工作原理图

5.3.2  RSS订阅工具的使用

大部分的新闻网站都提供聚合阅读器功能,这种阅读器短小精悍,便于新闻的浏览。还有很多软件公司和个人提供许多功能强大的RSS阅读器,其中“周博通资讯阅读器”是目前网络上比较流行的一种订阅工具。其使用界面如图5-3所示。主要分为4个区:频道列表区、搜索区、文章标题列表区和文章内容显示区。

图5-3  RSS订阅工具工作界面

声明

周博通资讯阅读器的下载地址:“http://www.potu.com/index/index.php”。

本节将通过介绍这个RSS阅读工具的使用,让读者了解RSS的组成、规范以及订阅情况。讲解步骤如下。

(1)打开“周博通资讯阅读器”,界面如图5-3所示。从频道列表区可以看到,软件已经为用户创建了许多分类目录。

(2)在频道列表区的空白处,右键单击鼠标,在弹出的快捷菜单中选择“新建RSS频道目录”菜单命令,弹出“类别名称”对话框。

(3)在“类别名称”对话框内输入自己定义的类别,如“我自己的Blog”。单击“OK”按钮。

(4)在频道列表的最下方,就生成了一个名为“我自己的Blog”的频道目录。

(5)右键单击“我自己的Blog”目录,在弹出的快捷菜单中,选择“新增RSS频道”菜单选项,弹出创建RSS频道的向导对话框,如图5-4所示。注意地址对话框右侧的“剪贴板”按钮,如果读者已经拷贝了要添加的频道地址,可通过此按钮实现频道地址的自动填充。

图5-4  向导中输入频道地址的界面

(6)此刻在地址对话框内,输入的不是普通的URL,而是RSS频道地址。如果输入的地址不正确,对话框的状态栏会提示“您输入的URL不是有效的频道地址”。为了准确填写频道地址,需要在选择网站频道时,单击频道的“RSS”链接导航。本例地址为“http://blog.csdn.net/ championchen79/category/197094.aspx/rss”。其内容样式可参考代码清单5-2,这是一个比较典型的RSS格式文件。本例中所有的标准元素都以黑体显示,并提供了两个文章项目。

代码清单5-2  csdn网站提供的Blog RSS订阅格式

- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback= "http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb. org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">

- <channel>

   <title>championchen79的专栏 - asp.net基础特性</title>

   <link>http://blog.csdn.net/championchen79/category/197094.aspx</link>

   <description>主要是asp.net一些基础的概念东西和优点</description>

   <dc:language>af</dc:language>

   <generator>.Text Version 1.0.1.1</generator>

   <image>http://counter.csdn.net/pv.aspx?id=72</image>

- <item>

   <dc:creator>血海无崖</dc:creator>

   <title>membership在vs2005中的应用-Role(二)</title>

   <link>http://blog.csdn.net/championchen79/archive/2006/05/12/725624.aspx</link>

   <pubDate>Fri, 12 May 2006 10:26:00 GMT</pubDate>

   <guid>http://blog.csdn.net/championchen79/archive/2006/05/12/725624.aspx</guid>

   <wfw:comment>http://blog.csdn.net/championchen79/comments/725624.aspx</wfw: comment>

   <comments>http://blog.csdn.net/championchen79/archive/2006/05/12/725624. aspx# Feedback</comments>

   <slash:comments>0</slash:comments>

   <wfw:commentRss>http://blog.csdn.net/championchen79/comments/commentRss/725624. aspx</wfw:commentRss>

   <trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=725624</trackback: ping>

   <description>看看memberrole中role的使用。角色管理以后不发愁了。<img src ="http://blog. csdn.net/championchen79/aggbug/725624.aspx" width = "1" height = "1" /></description>

   </item>

- <item>

   <dc:creator>血海无崖</dc:creator>

   <title>membership在vs2003中的应用-MemberShip(一)</title>

   <link>http://blog.csdn.net/championchen79/archive/2006/05/11/724769.aspx</link>

   <pubDate>Thu, 11 May 2006 17:04:00 GMT</pubDate>

   <guid>http://blog.csdn.net/championchen79/archive/2006/05/11/724769.aspx</guid>

   <wfw:comment>http://blog.csdn.net/championchen79/comments/724769.aspx</wfw: comment>

   <comments>http://blog.csdn.net/championchen79/archive/2006/05/11/724769.aspx# Feedback</comments>

   <slash:comments>0</slash:comments>

   <wfw:commentRss>http://blog.csdn.net/championchen79/comments/commentRss/724769. aspx</wfw:commentRss>

   <trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=724769</trackback: ping>

   <description>membership在vs2003中的应用.用户角色权限等的不用再麻烦和头疼了。<img src = "http://blog.csdn.net/championchen79/aggbug/724769.aspx" width = "1" height = "1" /> </description>

   </item>

 </channel>

</rss>

(7)单击“下一步”按钮,向导对话框要求输入频道名称和频道所在的目录,默认名称取自RSS文件中“Channel”元素的“title”属性,如图5-5所示。

(8)单击“完成”按钮,在“我自己的Blog”目录下,生成了一个频道。频道的文章标题和内容如图5-6所示。

这样就在自己的阅读器中,添加了一个RSS的订阅频道。可通过设置阅读器的自动更新功能,使得自己每次打开RSS阅读器的时候,看到的都是最新的频道内容。

图5-5  向导中输入频道名称的界面

图5-6  频道中的文章主题和内容界面

 

网页RSS阅读器的原理及实现

RSS是用xml写的,它是一种使用xml来在网站上发布网页内容的一种方法,因此我们可以使用读取xml的方法来读取RSS的内容。这就RSS阅读器的原理。

下面我用ASP写一个最简单的网页RSS阅读器,并作出说明。

一、代码如下:

<%
Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET","http://rss.sina.com.cn/news/marquee/ddt.xml",False
http.send


Set xml=Server.CreateObject("Microsoft.XMLDOM")
xml.Async=False
xml.ValidateOnParse=False
xml.Load(http.ResponseXML)

Set item=xml.getElementsByTagName("item")
For i=0 To (item.Length-1)
    Set title=item.Item(i).getElementsByTagName("title")
    Set link=item.Item(i).getElementsByTagName("link")
    Response.Write(title.Item(0).Text &" "& link.Item(0).Text &"<hr />")
Next
%>


二、说明如下:

Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET","http://rss.sina.com.cn/news/marquee/ddt.xml",False
http.send


上面这段代码用于创建一个XMLHttpRequest对象,以实现跨域访问远程服务器上的XML文档(这里是 http://rss.sina.com.cn/news/marquee/ddt.xml)。

Set xml=Server.CreateObject("Microsoft.XMLDOM")
xml.Async=False
xml.ValidateOnParse=False
xml.Load(http.ResponseXML)

上面这段代码创建一个Microsoft's XML parser(微软XML解析器)对象,并将http.ResponseXML得到的XML文档装入其中,以便解析处理XML文档。

Set item=xml.getElementsByTagName("item")
For i=0 To (item.Length-1)
    Set title=item.Item(i).getElementsByTagName("title")
    Set link=item.Item(i).getElementsByTagName("link")
    Response.Write(title.Item(0).Text &" "& link.Item(0).Text &"<hr />")
Next


Set item=xml.getElementsByTagName("item")使用微软XML解析器对象的getElementsByTagName方法来返回一个包含XML文档中所有名为item的结点的一个数组。之后的代码就是对数组的操作并输出。
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值