310 likes | 582 Views
第 8 章 RSS. RSS 是 Web 2.0 的重要元素。 RSS 是 Really Simple Syndication 的简称,它是一种网页内容联合格式( Web Content Sydication Format )。本章将介绍 RSS 文档的规范、如何创建一个简单的 RSS 文档、订阅 RSS 源的方法,并创建一个基于 Web 的 RSS 阅读器来阅读订阅的 RSS 源。其中,该 RSS 阅读器的效果,本章网络应用程序(网站)的名称为 RSS 。. 8.1 什么是 RSS.
E N D
第8章 RSS • RSS是Web 2.0的重要元素。RSS是Really Simple Syndication的简称,它是一种网页内容联合格式(Web Content Sydication Format)。本章将介绍RSS文档的规范、如何创建一个简单的RSS文档、订阅RSS源的方法,并创建一个基于Web的RSS阅读器来阅读订阅的RSS源。其中,该RSS阅读器的效果,本章网络应用程序(网站)的名称为RSS。
8.1 什么是RSS • 本小节将介绍RSS的基础知识。内容包括RSS的定义、RSS文档的格式、RSS的技术规范,以及目前比较流行的RSS的阅读器。
8.1.1 RSS概述 • RSS文档也是一种XML文档。因此,RSS文档都必须遵循XML 1.0规范(该规范发布在W3C网站上)。目前,RSS存在多个版本:0.91(2000年)、0.92(2000年12月)、0.94(2002年8月)、2.0.1(2002年)等。在每一个RSS文档的开头处,存在一个<rss>元素。该元素包含属性version,该属性指定RSS文档的版本。下面代码标识了RSS文档的版本为2.0版本。 • <rss version="2.0">
8.1.2 RSS技术规范 • 本小节将介绍RSS文档的技术规范,主要包括RSS文档的数据类型和元素。 • 1.数据类型 • 2.元素
8.1.3 目前流行的RSS阅读器 • 随着RSS摘要数量的增加,RSS阅读器已经成为了Web 2.0世界里面的一个必需品。它可以帮助用户发现和组织感兴趣的频道列表,并提供统一的阅读界面。下面将介绍国内外目前比较流行的RSS阅读器。 • 1.看天下(www.kantianxia.com) • 2.新闻蚂蚁(www.newsants.com) • 3.周博通(www.zhoubotong.com) • 4.资讯通(www.hc360.com) • 5.新浪点点通
8.2 总体功能设计和数据库设计 • 应用程序RSS主要实现RSS订阅、RSS阅读器两大功能。其中,RSS订阅包括订阅互联网上包含RSS新闻的页面等功能。RSS阅读器包括读取RSS页面的内容,并解释该页面的功能。
8.2.1 总体功能设计 • 应用程序RSS主要实现了RSS订阅和RSS阅读器两大功能。其中,RSS订阅主要处理RSS源。RSS阅读器主要处理RSS页面的内容。具体说明如下: • 1.RSS订阅 • 2.RSS阅读器
8.2.2 表设计 • 应用程序RSS的数据库比较简单,它仅仅包含一个表——RSSUrl。该表存储RSS页面的链接地址。RSS阅读器将读取该表中存储地址的页面的内容。下面对RSS外链接地址表RSSUrl作下介绍。
8.3 应用程序RSS • 本小节主要介绍应用程序RSS的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题”的用户控件ModuleTitle.ascx,它存放在UserControl目录下。 • 8.3.1 应用程序RSS的组成 • 应用程序RSS包含Admin、App_Code、App_Themes、Bin、Portal和UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Admin和Portal目录,在【解决方案资源管理器】面板中查看应用程序RSS组成,如图8.3所示。应用程序RSS的各个目录和文件的功能具体说明如下: • Admin目录,主要包含超级管理员使用的后台管理页面,如注册新用户、用户管理等页面。
8.3.2 配置文件Web.Config • 应用程序RSS的配置文件Web.Config放置在其根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“data source=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB”。同时还配置了应用程序RSS的验证方式为“Windows”。
8.3.3 添加应用程序的引用文件 • 应用程序RSS使用了3个基础工程(第2章已经详细介绍过)中的功能。在此,笔者该应用程序中添加了这三个引用(即文件的后缀名为.dll)。它们具体为: • Web2ASPNET2.CommonOperation.dll。 • Web2ASPNET2.OperateSqlServer.dll。 • Web2ASPNET2.UserCommonOperation.dll。
8.3.4 主页Default.aspx • 应用程序RSS的主页Default.aspx特别简单。该页面在Page_Load(object sender, EventArgs e)事件中重定向到用户登录页面UserLogin.aspx。程序代码如下所示。 • protected void Page_Load(object sender,EventArgs e) • { • Response.Redirect("~/Portal/UserLogin.aspx"); ///重定向到登录页面 • }
8.3.5 通用模块设计 • 应用程序RSS中的通用模块设计只包含一个名称为“模块标题”的用户控件。实现该控件的文件为ModuleTitle.ascx,它的代码隐藏文件为ModuleTitle.ascx.cs。该用户控件的设计界面,
8.4 关键技术详解 • 本小节将介绍应用程序RSS中的关键技术——创建一个简单的RSS页面。在此,笔者定义了名称为SampleRss的类,它专门用来创建一个简单的RSS页面。类SampleRss定义了创建RSS页面的头部、Item项、尾部,以及输出RSS页面等方法。具体方法如下所示。 • (1)private XmlTextWriter WriteRSSHeader(XmlTextWriter writer),创建RSS页面的头部。 • (2)private XmlTextWriter WriteRSSItem(XmlTextWriter writer, string title,string link, string description),创建RSS页面的Item项。
8.4.1 创建RSS页面的头部 • 方法WriteRSSHeader(XmlTextWriter writer)创建RSS页面的头部。它通过XmlTextWriter对象writer输出RSS页面必须的内容,如RSS页面的标志(rss)、版本、频道的标题、频道的链接、频道的描述、版权信息等。
8.4.2 创建RSS的Item项 • 方法WriteRSSItem(XmlTextWriter writer, string title,string link,string description)和方法WriteRSSItem(XmlTextWriter writer,RSSItem item)都是创建RSS页面的Item项。其中,第一个方法只向页面输出Item的标题、链接和描述。第二个方法可以输出Item的所有属性。
8.4.3 创建RSS页面的尾部 • 方法WriteRSSTailer(XmlTextWriter writer)创建RSS页面的尾部。它通过XmlTextWriter对象writer输出RSS页面的结尾内容,如RSS页面的结束标志(</rss>)等。程序代码如下所示。
8.4.4 输出RSS页面 • 方法CreateSampleRss(HttpResponse response,params RSSItem[]items)创建一个RSS页面,即在网页上输出RSS页的内容。它首先调用方法WriteRSSHeader(XmlTextWriter writer)创建RSS页面的头部;然后调用方法WriteRSSItem(XmlTextWriter writer,RSSItem item)创建RSS页面的Item项;最后调用方法WriteRSSTailer(XmlTextWriter writer)创建RSS页面的尾部。
8.4.5 创建一个简单的RSS页面 • 页面SampleRSS.aspx创建一个简单RSS页面,它的代码隐藏文件为SampleRSS.aspx.cs。该页面的最终效果, • RSS页面SampleRSS.aspx在Page_Load(object sender,System.EventArgs e)事件中创建了两个Item项,并设置了每一个Item项的Title、Link、Description属性的值。最后调用SampleRss类的方法CreateSampleRss(HttpResponse response,params RSSItem[] items)输出这两个Item项,即创建为一个简单RSS页面。Page_Load(object sender,System.EventArgs e)事件的程序
8.5 订阅RSS • 本小节主要介绍应用程序RSS中与订阅RSS相关的功能,如订阅RSS源、修改已经订阅的RSS源、RSS源管理等。
8.5.1 数据访问层设计 • 类Url定义了订阅RSS功能的数据访问层的操作。该类定义的方法如下: • public DataSet GetUrls(),获取所有订阅的RSS源。 • public SqlDataReader GetSingleUrl(int urlID),获取单个订阅的RSS源。 • public int AddUrl(string name,string url),订阅RSS源。 • public int UpdateUrl(int urlID,string name,string url),修改订阅的RSS源。 • public int DeleteUrl(int urlID),删除订阅的RSS源。
8.5.2 存储过程 • 8.5.1小节中的类Url使用了5个存储过程。这5个存储都操作RSSUrl表,说明如下所示。 • Pr_GetRSSUrls,获取所有订阅的RSS源。 • Pr_GetSingleRSSUrl,获取单个订阅的RSS源。 • Pr_AddRSSUrl,订阅RSS源。 • Pr_UpdateRSSUrl,修改订阅的RSS源。 • Pr_DeleteRSSUrl,删除订阅的RSS源。
8.5.3 订阅RSS源 • 订阅RSS源由页面AddUrl.aspx实现,它的代码隐藏文件为AddUrl.aspx.cs。该页面实现功能如下。 • 输入新RSS源的名称和URL。 • 添加新RSS源,并把新RSS源的信息提交到数据库中。 • 返回到RSS源管理页面UrlManage.aspx。
8.5.4 修改RSS源 • 修改RSS源由页面UpdateUrl.aspx实现,它的代码隐藏文件为UpdateUrl.aspx.cs。该页面实现功能如下。 • 编辑RSS源的名称和URL。 • 修改RSS源,并把修改后的RSS源信息提交到数据库中。 • 返回到RSS源管理页面UrlManage.aspx。
8.5.5 RSS源管理 • RSS源管理由页面UrlManage.aspx实现,它的代码隐藏文件为UrlManage.aspx.cs。该页面实现功能如下。 • 以列表形式显示RSS源的信息。 • 提供重定向到添加和修改RSS源页面的按钮。 • 提供删除RSS源的功能。
8.6 RSS阅读器 • 本小节主要介绍应用程序RSS中与RSS阅读器相关的功能,如订阅RSS的频道、读取RSS的频道、订阅RSS的Item、读取RSS的Item等。在此,笔者定义了类RSSItem和RSSChannel实现上述功能。这两个类都被定义在命名空间Web2ASPNET2.WebRSS中,
8.6.1 定义RSS的Item • 在下述程序代码中,类RSSItem用来表示RSS的Item。它属于Web2ASPNET2.WebRSS命名空间。RSSItem类定义了一个字典字段attributes。它是一个集合,用来保存Item的子元素的名称及其值。另外,该字典在类RSSItem的构造函数中初始化,并通过属性Attributes公开该字典。
8.6.2 定义RSS的频道 • 在下述程序代码中,类RSSChannel用来表示RSS的频道(Channel)。它被定义在命名空间Web2ASPNET2.WebRSS中。 • 注意:类RSSChannel继承于RSSItem类,并且还定义了保存RSS源的URL的私有字段url。 • 类RSSChannel也定义了一个字典字段items。它是一个集合,用来保存Channel的子元素(如Item、Name等)的名称及其值。另外,该字典在类RSSChannel的构造函数中初始化,并通过属性Items公开该字典。
8.6.3 读取RSS的Item • 在下述程序代码中,类RSSChannel定义了读取RSS的Item的私有方法private RSSItem ReadItem(XmlTextReader reader,string name)。该方法读取Item的每一个子元素的值,并创建一个RSSItem对象最为方法的返回结果。
8.6.4 读取RSS频道 • 在下述程序代码中,类RSSChannel定义了读取RSS频道的方法ReadChannel()。该方法根据字段url获取网站的数据,并检索每一个频道的数据。其具体步骤如下: • (1)根据URL创建读取网页内容的XmlTextReader对象reader。 • (2)调用reader的方法Read()读取内容中的每一个元素。 • (3)如果元素的名称为“item”,则调用方法ReadItem(XmlTextReader reader,string name)该其值,并添加到到字典items中。
8.6.5 在网页中显示RSS内容 • RSS阅读器使用了三个Web窗体页:Index.aspx、LeftUrl.aspx和ViewRSS.aspx。其中,第一个页面为母页面,它的左边放置页面LeftUrl.aspx,右边放置页面ViewRSS.aspx。页面LeftUrl.aspx显示被订阅的RSS源名称。页面ViewRSS.aspx将显示页面LeftUrl.aspx中被选择的RSS源的内容。RSS阅读器的最终效果,