Asp.Net 建立一个在线 RSS 新闻聚合器概要 本文讲解了如何使用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数据能被任何平台轻松使用。 FAQ:WhatisXSLTandHowDoesitRelatetoXML 使用RSS2.0规范的聚合内容 本文我们将要创建的第一个微型程序是一个聚合文件生成器。针对这个迷你程序,假设你是一个大型新闻网站(如MSNBC.com)的Web开发者,所有的新闻内容都保存在MicrosoftSQLServer2000数据库中。具体地说,这些文章是都保存在一个名为Articles的表中,表中以下字段与我们的程序密切相关: ArticleID—主键,自增长的整型字段,用来唯一标识每一篇文章; Title—指定标题,字段数据类型:varchar(50); Description—新闻内容描述,字段数据类型:varchar(2000); DatePublished—新闻发布日期,字段数据类型:datetime 所有XML元素必须正确嵌套; < rssversion="2.0"> < rss>元素只有一个子元素< channel>,用来描述聚合的内容。在< channel>元素里面有三个必需的子元素,用来描述Web站点的信息。这三个元素是: title—定义聚合文件的名称,一般来说,还会包括Web站点的名称; 每一个新闻项目放在一个单独的< item>元素中。< channel>元素可以有任意数量的< item>元素。每个< item>元素可以有多种的子元素,唯一的要求是最少必须包含< title>元素和< description>元素其中一个作为子元素。以下列出了一些相关的< item>子元素: title—新闻项目的标题; link—新闻项目的URL; description—新闻项目的大纲; author—新闻项目的作者; pubDate—新闻项目的发布日期 下面是一个非常简单的RSS2.0聚合文件。你可以从RSSgeneratedbyRadioUserLand看到其他的RSS2.0文件的例子。 < rssversion="2.0"> 关于< pubDate>元素的格式有一点特别重要,再此要讲一下。RSS要求日期必须按照RFC822日期和时间规范进行格式化,此格式要求:开头是一个可选的3字母星期缩写加一个逗号, 接着必须是日加上3字母缩写的月份和年份,最后是一个带时区名的时间。另外,要注意< description>子元素是可选的:上述文件第一个新闻没有< description>元素,而第二个新闻就有一个。 通过ASP.NET页面输出聚合内容 现在,我们已经知道了如何按照RSS2.0规范存储我们的新闻项,我们已经就绪创建一个ASP.NET页面,当用户发出请求时,就会返回网站聚合的内容。更确切地说,我们将建立一个名字叫rss.aspx的ASP.NET页面,这个页面会按照RSS2.0规范的格式返回Articles数据库表中的最新的5个新闻项。 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" |