当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Asp.Net 建立一个在线 RSS 新闻聚合器

ASP.NET
不同映射模式下的直线输出的效果问题
ASP.NET开发下的MVC设计模式的实现
ASP.NET编写应用程序的十大技巧
ASP.NET中使用AJAX的简单方法
ASP.NET MVC实现自己的视图引擎
认识asp.net会话状态
ASP.NET实现页面传值的几种方法
.NET中容易混淆的几组重要概念
详解.NET中的动态编译技术
如何使用ASP.Net加密Cookie
ASP.NET 2.0跨网页提交的三种方法
ASP.NET 2.0创建母版页引来的麻烦
.Net整合其他平台的一些探讨
ASP.NET编程经验技巧10则
最佳实践 ADO.NET实用经验无保留曝光
在.NET上执行多线程操作要考虑的两大因素
.Net开发 细说Visual Basic.Net
ASP.NET网络编程中经常用到的27个函数集
ASP.NET防止用户多次登录的方法
对ASP.NET MVC项目中的视图做单元测试

ASP.NET 中的 Asp.Net 建立一个在线 RSS 新闻聚合器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 89 ::
收藏到网摘: n/a

概要

本文讲解了如何使用XMLWeb控件获取远程XML数据并在ASP.NET页面显示这些XML数据,以及使用Repeater控件发布数据库中的XML数据。在过去的几年间,随着异构平台间共享数据的需求不断增长,XML的使用也呈爆炸性增长。意识到这种趋势,微软在整个.NET框架中对XML提供了健壮的支持。这意味着,对于ASP.NET开发者来说,在Web页面中显示和处理XML数据从来没有这么容易过。本文将通过生成一个RSS2.0聚合引擎和在线新闻聚合器来学习XML和ASP.NET技术。本文假设读者熟悉ASP.NET和XML。

目录

简介

使用RSS2.0规范的聚合内容

通过ASP.NET页面输出聚合内容

在ASP.NET页面中使用聚合摘要

显示聚合摘要列表

显示特定聚合摘要的新闻项

显示特定新闻项的详细内容

未来的扩展和当前程序的缺点
总结

简介

随着办公室和家庭上网在线时间的延长,以及Web站点和可访问的互联网应用程序呈持续爆炸性增长,应用程序之间能数据共享变得越来越重要。在异构平台之间共享数据需要一种平台中立的数据格式,这种数据格式要求能易于通过标准的互联网协议来传输,而这正是XML的用武之地。因为XML文件本质上只是一个文本文件,其编码格式众所周知,而且现有的XML解析器能为所有主流编程语言所用,所以XML数据能被任何平台轻松使用。
Web网站聚合就是一种使用XML来共享数据的范例,在新闻站点和网志中经常可以看到。采用Web网站聚合技术,网站能以XML格式的Web可访问的聚合文件来发布最新内容。网站使用的聚合格式有很多种,其中最流行的一种格式就是RSS2.0。(RSS2.0规范被发布在HarvardLaw网站的技术栏目上)。此外,MSDN杂志有一个聚合文件:MSDN杂志:本期刊物,其中列出了最新一期MSDN杂志上的文章,包括到在线版本文章的链接。
一旦Web站点有了公开发布聚合文件,那么不同的客户端就可以消费它。消费聚合文件的方式有很多种,比如,某个提供.NET技术资源的站点可能希望在网站中添加最新的MSDN杂志文章标题。聚合文件还常常被新闻聚合器程序所用,这种程序被专门设计用来获取和显示不同来源的聚合文件。
随着人们越来越注重使用XML数据,在ASP.NET页面中处理XML数据的能力变得比以往更关键。既然Web站点聚合如此重要,本文我们就来创建一个Web站点聚合文件生成程序和一个在线新闻聚合器。在建立这两个微型程序的过程中,我们将讲述如何访问和显示XML数据,不论这些数据是来自远端的Web服务器还是本地的文件系统。我们将演示如何多种不同的方法显示XML数据,比如:用Repeater控件以及用ASP.NETXMLWeb控件。
因为这只是一篇小文章,不可能长篇大论,我会假设读者您熟悉XSLT和XPath。如果您不熟悉,建议在看这篇文章之前先访问以下资源:

FAQ:WhatisXSLTandHowDoesitRelatetoXML
XSLTutorial
XPathTutorial

使用RSS2.0规范的聚合内容

本文我们将要创建的第一个微型程序是一个聚合文件生成器。针对这个迷你程序,假设你是一个大型新闻网站(如MSNBC.com)的Web开发者,所有的新闻内容都保存在MicrosoftSQLServer2000数据库中。具体地说,这些文章是都保存在一个名为Articles的表中,表中以下字段与我们的程序密切相关:

ArticleID—主键,自增长的整型字段,用来唯一标识每一篇文章;

Title—指定标题,字段数据类型:varchar(50);

Description—新闻内容描述,字段数据类型:varchar(2000);

DatePublished—新闻发布日期,字段数据类型:datetime
请注意,Articles表中可能还有其它字段,上面所列的只是我们在创建聚合文件的时候所要用到的字段。而且,这只是一个非常简单的数据模型,在是应用的数据库环境中,你可能会使用更加标准化的数据库模型,比如具备一个单独的authors(作者)表,有一个建立作者和文章之间多对多关系的表等等。
下一步,我们将创建一个ASP.NET页面,用格式化好的RSS2.0XML文件显示一个最新的新闻列表。在讲述如何在ASP.NET页面中完成这种转换之前,我们要先介绍一下RSS2.0规范的内容。我们应该记住,在整个规范中,RSS是被设计用来为聚合内容提供一个数据模型。那么毫无疑问,它会有一系列的XML元素,用来描述Web站点要聚合的内容信息,以及一系列用来描述某一特定新闻项的XML元素。最后,不要忘记RSS聚合文件是一个XML格式文件,必须符合XML格式化的准则,也就是:

所有XML元素必须正确嵌套;
所有的属性值要用引号包含起来;
< ,>,&,"和''符号要相应地替换为< ,>,&,"和&apos;;
  而且,XML格式是大小写敏感的,这就意味着,XML元素的起始和终止标签必须匹配,拼写和大小写都必须一致。
  RSS2.0的根元素是< rss>元素,这个元素可以有一个版本号的属性,例如:

< rssversion="2.0">
...
< /rss>

< rss>元素只有一个子元素< channel>,用来描述聚合的内容。在< channel>元素里面有三个必需的子元素,用来描述Web站点的信息。这三个元素是:

title—定义聚合文件的名称,一般来说,还会包括Web站点的名称;
link—Web站点的URL;
description—Web站点的一段简短的描述。
除此之外,还有一些可选元素来描述站点信息。这些元素的更多信息请参见RSS2.0规范。

每一个新闻项目放在一个单独的< item>元素中。< channel>元素可以有任意数量的< item>元素。每个< item>元素可以有多种的子元素,唯一的要求是最少必须包含< title>元素和< description>元素其中一个作为子元素。以下列出了一些相关的< item>子元素:

title—新闻项目的标题;

link—新闻项目的URL;

description—新闻项目的大纲;

author—新闻项目的作者;

pubDate—新闻项目的发布日期

下面是一个非常简单的RSS2.0聚合文件。你可以从RSSgeneratedbyRadioUserLand看到其他的RSS2.0文件的例子。

< rssversion="2.0">
< channel>
< title>LatestDataWebControls.comFAQs< /title>
< link>http://datawebcontrols.com< /link>
< description>
ThisisthesyndicationfeedfortheFAQs
atDataWebControls.com
< /description>
< item>
< title>WorkingwiththeDataGrid< /title>
< link>http://datawebcontrols.com/faqs/DataGrid.aspx< /link>
< pubDate>Mon,07Jul200321:00:00GMT< /pubDate>
< /item>
< item>
< title>WorkingwiththeRepeater< /title>
< description>
ThisarticleexamineshowtoworkwiththeRepeater
control.
< /description>
< link>http://datawebcontrols.com/faqs/Repeater.aspx< /link>
< pubDate>Tue08Jul200312:00:00GMT< /pubDate>
< /item>
< /channel>
< /rss>

关于< pubDate>元素的格式有一点特别重要,再此要讲一下。RSS要求日期必须按照RFC822日期和时间规范进行格式化,此格式要求:开头是一个可选的3字母星期缩写加一个逗号,

接着必须是日加上3字母缩写的月份和年份,最后是一个带时区名的时间。另外,要注意< description>子元素是可选的:上述文件第一个新闻没有< description>元素,而第二个新闻就有一个。

通过ASP.NET页面输出聚合内容

现在,我们已经知道了如何按照RSS2.0规范存储我们的新闻项,我们已经就绪创建一个ASP.NET页面,当用户发出请求时,就会返回网站聚合的内容。更确切地说,我们将建立一个名字叫rss.aspx的ASP.NET页面,这个页面会按照RSS2.0规范的格式返回Articles数据库表中的最新的5个新闻项。
可以有几种方法来完成这件事,稍后将会讲到。但是现在,我们首先要完成一件事,那就是先要从数据库中获得最新的5个新闻项。这可以用下面的SQL查询语句获得:

SELECTTOP5ArticleID,Title,Author,Description,DatePublishedFROMArticlesORDERBYDatePublishedDESC

获得了这些信息以后,我们需要把这些信息转换成相应的RSS2.0格式聚合文件。要把数据库的数据显示为XML数据最简单、快速的方法就是使用Repeater控件。准确地说,Repeater控件将在HeaderTemplate和FooterTemplate模版里显示< rss>元素、< channel>元素以及站点相关的元素标签,在ItemTemplate模版里面显示< item>元素。下面是我们这个ASP.NET页面(.aspx文件)的HTML部分:

< %@Pagelanguage="c#"ContentType="text/xml"Codebehind="rss.aspx.cs"
AutoEventWireup="false"Inherits="SyndicationDemo.rss"%>
< asp:Repeaterid="rptRSS"runat="server">
< HeaderTemplate>
< rssversion="2.0">
< channel>
< title>ASP.NETNews!< /title>
< li >