【 tulaoshi.com - 编程语言 】
                             
                            Rss 是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS 搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个 Rss 文件后,这个 Rss  Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用。 
        在之前我们如果要实现博客的RSS订阅,通常都需要手写代码去生产或读取XML。现在有了RSSToolKit,这一切就变得简单了。你可以使用他在五分钟内实现自己的 Rss 在线阅读器。这篇文章将介绍如何读取站点 Rss 信息。 
开发环境:VS2005 + RSSToolKit 
一、首先我们需要建立一个ASP.NET AJAX站点 

二、引入RssToolKit到项目中,建好的项目如下(CSS和图片文件可以使用我压缩文档里的)

三、可以开始写代码了 
       1.首先需要一个ScriptManager、一个UpdatePanel、一个UpdateProgress。哈哈,都是废话AJAX页面程序大概都需要这些。其他的就是你的要求了。具体的页面代码如下: 
  1 %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" % 
  2  
  3 %@ Register Assembly="RssToolkit" Namespace="RssToolkit" TagPrefix="Rss" % 
  4 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" 
  5 html xmlns="http://www.w3.org/1999/xhtml" 
  6 head runat="server" 
  7     title向东博客阅读器|meil.livebaby.cn/title 
  8     link href="CSS/Layout.css" rel="stylesheet" type="text/css" / 
  9  
 10     script language="JavaScript" type="text/javascript" 
 11     var ls; 
 12     function ls_onClk(itemNumber) { 
 13      
 14         if(ls == null) ls = $get("List0"); 
 15          
 16         ls.className = ""; 
 17         ls = $get("list" + itemNumber); 
 18         ls.className = "current"; 
 19         return true; 
 20     } 
 21     /script 
 22  
 23 /head 
 24 body 
 25     form id="form1" runat="server" 
 26         asp:ScriptManager ID="ScriptManager1" runat="server" / 
 27         div id="content-header" 
 28             h1asp:HyperLink ID="HyperLink1" runat="server" Text="向东" Target="_blank" NavigateUrl="http://meil.livebaby.cn/index.html"/asp:HyperLink 
 29                 博客阅读器/h1 
 30         /div 
 31         div id="content-container" 
 32             div id="content-side1" 
 33                 ul class="list-of-links" 
 34                    li id="list0" class="current" 
 35                         asp:LinkButton ID="lb0" runat="server" CommandArgument="0" OnClientClick="ls_onClk(0);" OnCommand="lnk_cmd"向东博客/asp:LinkButton/li 
 36                    li id="list1" 
 37                         asp:LinkButton ID="lb1" runat="server" CommandArgument="1" OnClientClick="ls_onClk(1);" OnCommand="lnk_cmd"财经博客/asp:LinkButton/li 
 38                     li id="list2" 
 39                         asp:LinkButton ID="lb2" runat="server" CommandArgument="2" OnClientClick="ls_onClk(2);" OnCommand="lnk_cmd"Flower博客/asp:LinkButton/li 
 40                     li id="list3" 
 41                         asp:LinkButton ID="lb3" runat="server" CommandArgument="3" OnClientClick="ls_onClk(3);" OnCommand="lnk_cmd"活力宝贝博客网/asp:LinkButton/li 
 42                     li id="list4" 
 43                         asp:LinkButton ID="lb4" runat="server" CommandArgument="4" OnClientClick="ls_onClk(4);" OnCommand="lnk_cmd"悠悠宝贝的博客/asp:LinkButton/li 
 44                     li id="list5" 
 45                         asp:LinkButton ID="lb5" runat="server" CommandArgument="5" OnClientClick="ls_onClk(5);" OnCommand="lnk_cmd"font color="red"向东博客园博客/font/asp:LinkButton/li 
 46                     li id="li6" 
 47                         asp:LinkButton ID="lb6" runat="server" CommandArgument="6" OnClientClick="ls_onClk(6);" OnCommand="lnk_cmd"font color="red"博客园/font/asp:LinkButton/li 
 48                 /ul 
 49             /div 
 50             div id="content-main" 
 51                 asp:UpdatePanel ID="updateMain" runat="server" UpdateMode="conditional"  
 52                     Triggers 
 53                         asp:AsyncPostBackTrigger ControlID="lb0" / 
 54                         asp:AsyncPostBackTrigger ControlID="lb1" / 
 55                         asp:AsyncPostBackTrigger ControlID="lb2" / 
 56                         asp:AsyncPostBackTrigger ControlID="lb3" / 
 57                         asp:AsyncPostBackTrigger ControlID="lb4" / 
 58                         asp:AsyncPostBackTrigger ControlID="lb5" / 
 59                         asp:AsyncPostBackTrigger ControlID="lb6" / 
 60                     /Triggers 
 61                     ContentTemplate 
 62                         h2asp:Label ID="lblHeader" runat="server"最新日志/asp:Label/h2 
 63                         hr / 
 64                         asp:Panel ID="pnlBlog" runat="server" 
 65                             Rss:RssDataSource ID="rssDS" runat="server" MaxItems="0" Url=""/Rss:RssDataSource 
 66                             asp:DataList ID="lsBlog" runat="server" DataSourceID="rssDS" 
 67                                 ItemTemplate 
 68                                     asp:Panel ID="panelHeader" runat="server" Style="cursor: pointer; color: #d61719;width: 100%; display: block;" 
 69                                         span style="float: left;"%# Eval("title") %/span 
 70                                         asp:Image ID="Image1" runat="server" Style="float: right;" ImageUrl="~/images/expand_blue.jpg" / 
 71                                     /asp:Panel 
 72                                     asp:Panel ID="Panel1" runat="server" Style="margin-top: 3px;width: 100%; background: transparent url(images/blogBack.gif) no-repeat text-top left;" 
 73                                         %# Eval("description") % 
 74                                         (asp:HyperLink ID="hlMore" runat="server" NavigateUrl='%# Eval("link") %' Target="_blank" Text="更多内容"/asp:HyperLink) 
 75                                     /asp:Panel 
 76                                     ajaxT:CollapsiblePanelExtender ID="cpe1" runat="server" TargetControlID="Panel1" 
 77                                         ExpandControlID="panelHeader" CollapseControlID="panelHeader" SuppressPostBack="true" 
 78                                         ImageControlID="Image1" Collapsed="true" ExpandedImage="~/images/collapse_blue.jpg" 
 79                                         CollapsedImage="~/images/expand_blue.jpg" / 
 80                                     hr style="border-bottom: 1px dotted #B2B2B2; margin: 0px;" / 
 81                                 /ItemTemplate 
 82                             /asp:DataList 
 83                         /asp:Panel 
 84                     /ContentTemplate 
 85                 /asp:UpdatePanel 
 86             /div 
 87         /div 
 88         asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="true" 
 89             ProgressTemplate 
 90                 div id="updProgress" 
 91                     img alt="" src="images/indicator.gif" / 
 92                     span数据获取中/span 
 93                 /div 
 94             /ProgressTemplate 
 95         /asp:UpdateProgress 
 96     /form 
 97     centerdiva href="http://meil.livebaby.cn"meil.livebaby.cn/a  程序制作:向东  2007.7/center 
 98 /body 
 99 /html 
100  
比较重要的是这两部分: 
行66:Rss:RssDataSource ID="rssDS" runat="server" MaxItems="0" Url=""/Rss:RssDataSource 
这就是实现RSS读取的核心了,有了这个标记就实现了RSS读取的一半工作,那剩下的吶? 
看看下面者部分,lnk_cmd 命令实现了RSS数据的重绑定,这样你就可以实时的访问多个RSS地址了。如果你觉得这样还不够灵活,可以加个Textbox,然后用程序去绑定,这样也不错。不过,此次就不实现这个了,有兴趣的朋友可以试试,应该不难。哈哈! 
代码如下:
行35:asp:LinkButton ID="lb0" runat="server" CommandArgument="0" OnClientClick="ls_onClk(0);"   
                                      OnCommand="lnk_cmd"向东博客/asp:LinkButton/li  
1     protected void lnk_cmd(object sender, CommandEventArgs e)  
2     {  
3         int command = Convert.ToInt32(e.CommandArgument);  
4   
5         rssDataBind(command);  
6     }  
rssDataBind就是绑定的函数,代码是:  
 1     protected void rssDataBind(int cmd)  
 2     {  
 3         switch (cmd)  
 4         {  
 5             case 0:  
 6                 rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml";  
 7                 lsBlog.DataBind();  
 8                 lblHeader.Text = "向东博客";  
 9                 break;  
10             case 1:  
11                 rssDS.Url = "http://www.livebaby.cn/blog/u/money/rss2.xml";  
12                 lsBlog.DataBind();  
13                 lblHeader.Text = "财经博客";  
14                 break;  
15             case 2:  
16                 rssDS.Url = "http://www.livebaby.cn/blog/u/flower/rss2.xml";  
17                 lsBlog.DataBind();  
18                 lblHeader.Text = "Flower博客";  
19                 break;  
20             case 3:  
21                 rssDS.Url = "http://www.livebaby.cn/blog/rss2.asp";  
22                 lsBlog.DataBind();  
23                 lblHeader.Text = "活力宝贝博客网";  
24                 break;  
25             case 4:  
26                 rssDS.Url = "http://www.livebaby.cn/blog/u/yoyo/rss2.xml";  
27                 lsBlog.DataBind();  
28                 lblHeader.Text = "悠悠宝贝的博客";  
29                 break;  
30             case 5:  
31                 rssDS.Url = "http://www.cnblogs.com/meil/rss";  
32                 lsBlog.DataBind();  
33                 lblHeader.Text = "向东博客园博客";  
34                 break;  
35             case 6:  
36                 rssDS.Url = "http://www.cnblogs.com/rss";  
37                 lsBlog.DataBind();  
38                 lblHeader.Text = "博客园";  
39                 break;  
40             default:  
41                 break;  
42         }  
43     } 
就这么简单 
 rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml"; 
 lsBlog.DataBind(); 
是不是就如DB数据的绑定。MS的东西虽然结构性不好,但是上手真的好快。 
到底需要多少个Case就看你的需要了。我这里就绑定了六个RSS地址,你还可以更多,但要注意的是一定要和页面上的LinkButton数对应上。 
最终的C#代码如下: 
代码如下:
 1     protected void rssDataBind(int cmd)  
 2     {  
 3         switch (cmd)  
 4         {  
 5             case 0:  
 6                 rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml";  
 7                 lsBlog.DataBind();  
 8                 lblHeader.Text = "向东博客";  
 9                 break;  
10             case 1:  
11                 rssDS.Url = "http://www.livebaby.cn/blog/u/money/rss2.xml";  
12                 lsBlog.DataBind();  
13                 lblHeader.Text = "财经博客";  
14                 break;  
15             case 2:  
16                 rssDS.Url = "http://www.livebaby.cn/blog/u/flower/rss2.xml";  
17                 lsBlog.DataBind();  
18                 lblHeader.Text = "Flower博客";  
19                 break;  
20             case 3:  
21                 rssDS.Url = "http://www.livebaby.cn/blog/rss2.asp";  
22                 lsBlog.DataBind();  
23                 lblHeader.Text = "活力宝贝博客网";  
24                 break;  
25             case 4:  
26                 rssDS.Url = "http://www.livebaby.cn/blog/u/yoyo/rss2.xml";  
27                 lsBlog.DataBind();  
28                 lblHeader.Text = "悠悠宝贝的博客";  
29                 break;  
30             case 5:  
31                 rssDS.Url = "http://www.cnblogs.com/meil/rss";  
32                 lsBlog.DataBind();  
33                 lblHeader.Text = "向东博客园博客";  
34                 break;  
35             case 6:  
36                 rssDS.Url = "http://www.cnblogs.com/rss";  
37                 lsBlog.DataBind();  
38                 lblHeader.Text = "博客园";  
39                 break;  
40             default:  
41                 break;  
42         }  
43     } 
源码下载地址:http://www.cnblogs.com/Files/meil/ReaderRss_src.rar 
本文永久地址: http://www.livebaby.cn/blog/u/meil/archives/2007/1169.html