Rss是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个Rss文件后,这个RssFeed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用。
在之前我们如果要实现博客的RSS订阅,通常都需要手写代码去生产或读取XML。现在有了RSSToolKit,这一切就变得简单了。你可以使用他在五分钟内实现自己的Rss在线阅读器。这篇文章将介绍如何读取站点Rss信息。
开发环境:VS2005+RSSToolKit
一、首先我们需要建立一个ASP.NETAJAX站点
二、引入RssToolKit到项目中,建好的项目如下(CSS和图片文件可以使用我压缩文档里的)
三、可以开始写代码了
1.首先需要一个ScriptManager、一个UpdatePanel、一个UpdateProgress。哈哈,都是废话AJAX页面程序大概都需要这些。其他的就是你的要求了。具体的页面代码如下:
1<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
2
3<%@RegisterAssembly="RssToolkit"Namespace="RssToolkit"TagPrefix="Rss"%>
4<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
5<htmlxmlns="http://www.w3.org/1999/xhtml">
6<headrunat="server">
7<title>向东博客阅读器|meil.livebaby.cn</title>
8<linkhref="CSS/Layout.css"rel="stylesheet"type="text/css"/>
9
10<scriptlanguage="JavaScript"type="text/javascript">
11varls;
12functionls_onClk(itemNumber){
13
14if(ls==null)ls=$get("List0");
15
16ls.className="";
17ls=$get("list"+itemNumber);
18ls.className="current";
19returntrue;
20}
21</script>
22
23</head>
24<body>
25<formid="form1"runat="server">
26<asp:ScriptManagerID="ScriptManager1"runat="server"/>
27<divid="content-header">
28<h1><asp:HyperLinkID="HyperLink1"runat="server"Text="向东"Target="_blank"NavigateUrl="http://meil.livebaby.cn/index.html"></asp:HyperLink>
29博客阅读器</h1>
30</div>
31<divid="content-container">
32<divid="content-side1">
33<ulclass="list-of-links">
34<liid="list0"class="current">
35<asp:LinkButtonID="lb0"runat="server"CommandArgument="0"OnClientClick="ls_onClk(0);"OnCommand="lnk_cmd">向东博客</asp:LinkButton></li>
36<liid="list1">
37<asp:LinkButtonID="lb1"runat="server"CommandArgument="1"OnClientClick="ls_onClk(1);"OnCommand="lnk_cmd">财经博客</asp:LinkButton></li>
38<liid="list2">
39<asp:LinkButtonID="lb2"runat="server"CommandArgument="2"OnClientClick="ls_onClk(2);"OnCommand="lnk_cmd">Flower博客</asp:LinkButton></li>
40<liid="list3">
41<asp:LinkButtonID="lb3"runat="server"CommandArgument="3"OnClientClick="ls_onClk(3);"OnCommand="lnk_cmd">活力宝贝博客网</asp:LinkButton></li>
42<liid="list4">
43<asp:LinkButtonID="lb4"runat="server"CommandArgument="4"OnClientClick="ls_onClk(4);"OnCommand="lnk_cmd">悠悠宝贝的博客</asp:LinkButton></li>
44<liid="list5">
45<asp:LinkButtonID="lb5"runat="server"CommandArgument="5"OnClientClick="ls_onClk(5);"OnCommand="lnk_cmd"><fontcolor="red">向东博客园博客</font></asp:LinkButton></li>
46<liid="li6">
47<asp:LinkButtonID="lb6"runat="server"CommandArgument="6"OnClientClick="ls_onClk(6);"OnCommand="lnk_cmd"><fontcolor="red">博客园</font></asp:LinkButton></li>
48</ul>
49</div>
50<divid="content-main">
51<asp:UpdatePanelID="updateMain"runat="server"UpdateMode="conditional">
52<Triggers>
53<asp:AsyncPostBackTriggerControlID="lb0"/>
54<asp:AsyncPostBackTriggerControlID="lb1"/>
55<asp:AsyncPostBackTriggerControlID="lb2"/>
56<asp:AsyncPostBackTriggerControlID="lb3"/>
57<asp:AsyncPostBackTriggerControlID="lb4"/>
58<asp:AsyncPostBackTriggerControlID="lb5"/>
59<asp:AsyncPostBackTriggerControlID="lb6"/>
60</Triggers>
61<ContentTemplate>
62<h2><asp:LabelID="lblHeader"runat="server">最新日志</asp:Label></h2>
63<hr/>
64<asp:PanelID="pnlBlog"runat="server">
65<Rss:RssDataSourceID="rssDS"runat="server"MaxItems="0"Url=""></Rss:RssDataSource>
66<asp:DataListID="lsBlog"runat="server"DataSourceID="rssDS">
67<ItemTemplate>
68<asp:PanelID="panelHeader"runat="server">
69<span><%#Eval("title")%></span>
70<asp:ImageID="Image1"runat="server"ImageUrl="~/images/expand_blue.jpg"/>
71</asp:Panel>
72<asp:PanelID="Panel1"runat="server">
73<%#Eval("description")%>
74(<asp:HyperLinkID="hlMore"runat="server"NavigateUrl='<%#Eval("link")%>'Target="_blank"Text="更多内容"></asp:HyperLink>)
75</asp:Panel>
76<ajaxT:CollapsiblePanelExtenderID="cpe1"runat="server"TargetControlID="Panel1"
77ExpandControlID="panelHeader"CollapseControlID="panelHeader"SuppressPostBack="true"
78ImageControlID="Image1"Collapsed="true"ExpandedImage="~/images/collapse_blue.jpg"
79CollapsedImage="~/images/expand_blue.jpg"/>
80<hr/>
81</ItemTemplate>
82</asp:DataList>
83</asp:Panel>
84</ContentTemplate>
85</asp:UpdatePanel>
86</div>
87</div>
88<asp:UpdateProgressID="UpdateProgress1"runat="server"DisplayAfter="0"DynamicLayout="true">
89<ProgressTemplate>
90<divid="updProgress">
91<imgalt=""src="images/indicator.gif"/>
92<span>数据获取中</span>
93</div>
94</ProgressTemplate>
95</asp:UpdateProgress>
96</form>
97<center><div><ahref="http://meil.livebaby.cn">meil.livebaby.cn</a>程序制作:向东2007.7</center>
98</body>
99</html>
100
比较重要的是这两部分:
行66:<Rss:RssDataSourceID="rssDS"runat="server"MaxItems="0"Url=""></Rss:RssDataSource>
这就是实现RSS读取的核心了,有了这个标记就实现了RSS读取的一半工作,那剩下的吶?
看看下面者部分,lnk_cmd命令实现了RSS数据的重绑定,这样你就可以实时的访问多个RSS地址了。如果你觉得这样还不够灵活,可以加个Textbox,然后用程序去绑定,这样也不错。不过,此次就不实现这个了,有兴趣的朋友可以试试,应该不难。哈哈!
复制代码 代码如下:
行35:<asp:LinkButtonID="lb0"runat="server"CommandArgument="0"OnClientClick="ls_onClk(0);"
OnCommand="lnk_cmd">向东博客</asp:LinkButton></li>
1protectedvoidlnk_cmd(objectsender,CommandEventArgse)
2{
3intcommand=Convert.ToInt32(e.CommandArgument);
4
5rssDataBind(command);
6}
rssDataBind就是绑定的函数,代码是:
1protectedvoidrssDataBind(intcmd)
2{
3switch(cmd)
4{
5case0:
6rssDS.Url="http://www.livebaby.cn/blog/u/meil/rss2.xml";
7lsBlog.DataBind();
8lblHeader.Text="向东博客";
9break;
10case1:
11rssDS.Url="http://www.livebaby.cn/blog/u/money/rss2.xml";
12lsBlog.DataBind();
13lblHeader.Text="财经博客";
14break;
15case2:
16rssDS.Url="http://www.livebaby.cn/blog/u/flower/rss2.xml";
17lsBlog.DataBind();
18lblHeader.Text="Flower博客";
19break;
20case3:
21rssDS.Url="http://www.livebaby.cn/blog/rss2.asp";
22lsBlog.DataBind();
23lblHeader.Text="活力宝贝博客网";
24break;
25case4:
26rssDS.Url="http://www.livebaby.cn/blog/u/yoyo/rss2.xml";
27lsBlog.DataBind();
28lblHeader.Text="悠悠宝贝的博客";
29break;
30case5:
31rssDS.Url="http://www.cnblogs.com/meil/rss";
32lsBlog.DataBind();
33lblHeader.Text="向东博客园博客";
34break;
35case6:
36rssDS.Url="http://www.cnblogs.com/rss";
37lsBlog.DataBind();
38lblHeader.Text="博客园";
39break;
40default:
41break;
42}
43}
就这么简单
rssDS.Url="http://www.livebaby.cn/blog/u/meil/rss2.xml";
lsBlog.DataBind();
是不是就如DB数据的绑定。MS的东西虽然结构性不好,但是上手真的好快。
到底需要多少个Case就看你的需要了。我这里就绑定了六个RSS地址,你还可以更多,但要注意的是一定要和页面上的LinkButton数对应上。
最终的C#代码如下:
复制代码 代码如下:
1protectedvoidrssDataBind(intcmd)
2{
3switch(cmd)
4{
5case0:
6rssDS.Url="http://www.livebaby.cn/blog/u/meil/rss2.xml";
7lsBlog.DataBind();
8lblHeader.Text="向东博客";
9break;
10case1:
11rssDS.Url="http://www.livebaby.cn/blog/u/money/rss2.xml";
12lsBlog.DataBind();
13lblHeader.Text="财经博客";
14break;
15case2:
16rssDS.Url="http://www.livebaby.cn/blog/u/flower/rss2.xml";
17lsBlog.DataBind();
18lblHeader.Text="Flower博客";
19break;
20case3:
21rssDS.Url="http://www.livebaby.cn/blog/rss2.asp";
22lsBlog.DataBind();
23lblHeader.Text="活力宝贝博客网";
24break;
25case4:
26rssDS.Url="http://www.livebaby.cn/blog/u/yoyo/rss2.xml";
27lsBlog.DataBind();
28lblHeader.Text="悠悠宝贝的博客";
29break;
30case5:
31rssDS.Url="http://www.cnblogs.com/meil/rss";
32lsBlog.DataBind();
33lblHeader.Text="向东博客园博客";
34break;
35case6:
36rssDS.Url="http://www.cnblogs.com/rss";
37lsBlog.DataBind();
38lblHeader.Text="博客园";
39break;
40default:
41break;
42}
43}
本文永久地址:http://www.livebaby.cn/blog/u/meil/archives/2007/1169.html