1
如见Web2.0被吵的如火如荼,同时也有很多的评论褒贬不一。有人说Web2.0就是“一帮人在看皇帝的新装而已”。也有人说Web2.0将是一场变革。无论这些争论有没有价值,但我相信,存在就有它的必然性。也许Web2.0更像是一种商业模式,一个观念的变革而非技术。
2
不管怎样,它来了,你准备好了吗?
3
说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。
4
RSS毋容置疑就是其重要的应用之一。
5![]()
6
那么什么是RSS?它到底有什么用呢?
7![]()
8
RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
9
RSS是基于XML的一种形式。并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。具体格式可以查一下RSS 2.0规范,这里就不再重复粘贴了。
10![]()
11
下面是我总结的几种RSS的技术实现代码:
12![]()
13
1.在线生成RSS聚合页。
14![]()
15
(1)创建Rss.aspx
16
<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
17
只留下这一行,其余的都删掉。
18![]()
19
(2)后台代码;Rss.aspx.cs
20![]()
21
private void Page_Load(object sender, System.EventArgs e)
22
{
23
Response.ContentType="text/xml";
24
Response.Write(GetRSS());
25
}
26![]()
27
/// <summary>
28
/// 取得聚合文章
29
/// </summary>
30
/// <returns></returns>
31
public string GetRSS()
32
{
33
News t=new News();//自己的业务类
34
DataSet ds=t.GetListByClass(1);//根据类别得到数据
35
36
StringBuilder strCode=new StringBuilder();
37
strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");
38
strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"");
39
strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" ");
40
strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">");
41
strCode.Append("<channel>");
42
strCode.Append("<title>李天平RSSDemo</title>");
43
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");
44
strCode.Append("<description>天道酬勤</description> ");
45
strCode.Append("<copyright>Copyright 2005</copyright> ");
46
47
foreach(DataRow row in ds.Tables[0].Rows)
48
{
49
string Id=row["Id"].ToString();
50
string title=row["title"].ToString();
51
string description=row["description"].ToString();
52
string pubdate=row["pubdate"].ToString();
53
string ClassId=row["ClassId"].ToString();
54
//string author=row["author"].ToString();
55![]()
56
strCode.Append("<item>");
57
strCode.Append("<title>"+title+"</title>");
58
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");
59
strCode.Append("<subject>"+description+"</subject>");
60
strCode.Append("<description><![CDATA["+description+"]]></description>");
61
strCode.Append("<PubDate>"+pubdate+"</PubDate>");
62
strCode.Append("<category>"+ClassId+"</category>");
63
strCode.Append("</item>");
64
}
65
strCode.Append("</channel>");
66
strCode.Append("</rss>");
67
return strCode.ToString();
68
}
69![]()
70![]()
71
2.在线RSS阅读获取。
72![]()
73
页面代码:
74
<P style="FONT-SIZE: 11px">
75
Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
76
显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>
77
<P style="FONT-SIZE: 11px">
78
<asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>
79
<BR>
80
<asp:Label id="RssFeed" runat="server"></asp:Label></P>
81![]()
82
后台代码:
83
/// <summary>
84
/// 获得要显示的Feed种子数据
85
/// </summary>
86
/// <param name="RssUrl"></param>
87
/// <param name="showNewsCount"></param>
88
/// <returns></returns>
89
public string LoadRSS(string RssUrl, int showNewsCount)
90
{
91
string strRssList = "";
92
string strMsg;
93
try
94
{
95
XmlDocument objXMLDoc = new XmlDocument();
96
objXMLDoc.Load(RssUrl);
97
XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item");
98
99
if(showNewsCount > 30)
100
showNewsCount = 10;
101
if(showNewsCount < 1)
102
showNewsCount = objItems.Count;
103
104
string title="";
105
string link="";
106
int i;
107![]()
108
if(objXMLDoc.HasChildNodes == true)
109
{
110
i = 1;
111
foreach(XmlNode objNode in objItems)
112
{
113
if(i<=showNewsCount)
114
{
115
if(objNode.HasChildNodes == true)
116
{
117
XmlNodeList objItemsChild = objNode.ChildNodes;
118
foreach(XmlNode objNodeChild in objItemsChild)
119
{
120
switch(objNodeChild.Name)
121
{
122
case "title":
123
title = objNodeChild.InnerText;
124
break;
125
case "link":
126
link = objNodeChild.InnerText;
127
break;
128
}
129
}
130
i = i+1;
131
strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>";
132
}
133
}
134
}
135
}
136
strMsg = strRssList;
137
}
138
catch
139
{
140
strMsg = "RSS Feed 源数据出错!";
141
}
142
return strMsg;
143
}
144![]()
145
//获取按钮,获取指定RSS
146
private void GetFeed_Click(object sender, System.EventArgs e)
147
{
148
if(FeedUrl.Text == "")//RSS地址
149
{
150
RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!";
151
return ;
152
}
153
RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目
154
}
155![]()
156
3.无刷新动态更新的在线RSS阅读获取
157![]()
158
<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>
159
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
160
<HTML>
161
<HEAD>
162
<title>XmlHttp</title>
163
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
164
<meta name="CODE_LANGUAGE" Content="C#">
165
<meta name="vs_defaultClientScript" content="JavaScript">
166
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
167
<style>td { font-size: 9pt}
168
</style>
169
<script>
170
<!--
171
var oDiv
172
var xh
173
function getXML()
174
{
175
xh =new ActiveXObject("Microsoft.XMLHTTP");
176
oDiv = document.getElementById("rssitem");
177
oDiv.style.display= "";
178
try
179
{
180
//如果是本地改成下面语句直接读取
181
//xh.open("GET","/Rss.aspx",false);
182
xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);
183
xh.send(null);
184
loadData(xh,oDiv);
185
}
186
catch(e)
187
{
188
error(oDiv);
189
}
190
}
191
function loadData(xh,oDiv)
192
{
193
if (xh.readyState == 4)
194
{
195
xml = xh.responsexml;
196
var i;
197
var nodes = xml.selectNodes("/rss/channel/item");
198
var bloglink = xml.selectSingleNode("/rss/channel/link").text;
199
oDiv.innerHTML = "";
200
var html;
201
for(i=0;i<nodes.length;i++)
202
{
203
204
html += "<div >";
205
html += " <div >";
206
html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";
207
html += " </div>";
208
html += " <div >";
209
html += " " +nodes[i].selectSingleNode("description").text;
210
html += " </div>"
211
//html += " </div>";
212
html += "</div><hr>";
213![]()
214
}
215
oDiv.innerHTML = html;
216
}
217
else
218
{
219
error(oDiv);
220
}
221
}
222![]()
223
function error(oDiv)
224
{
225
oDiv.innerHTML = "载入失败";
226
}
227
-->
228
</script>
229
</HEAD>
230
<body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);">
231
<form id="Form1" method="post" runat="server">
232
<div align=center>
233
<table cellpadding="0" cellspacing="0" border="0" width="80%">
234
<tr>
235
<td>
236
<div id="rssitem" style="WIDTH:80%">数据载入中
</div>
237
</td>
238
</tr>
239
</table>
240
</div>
241
</form>
242
</body>
243
</HTML>
244![]()
245![]()
246![]()
如见Web2.0被吵的如火如荼,同时也有很多的评论褒贬不一。有人说Web2.0就是“一帮人在看皇帝的新装而已”。也有人说Web2.0将是一场变革。无论这些争论有没有价值,但我相信,存在就有它的必然性。也许Web2.0更像是一种商业模式,一个观念的变革而非技术。2
不管怎样,它来了,你准备好了吗?3
说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。4
RSS毋容置疑就是其重要的应用之一。5

6
那么什么是RSS?它到底有什么用呢?7

8
RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。9
RSS是基于XML的一种形式。并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。具体格式可以查一下RSS 2.0规范,这里就不再重复粘贴了。10

11
下面是我总结的几种RSS的技术实现代码:12

13
1.在线生成RSS聚合页。14

15
(1)创建Rss.aspx16
<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>17
只留下这一行,其余的都删掉。18

19
(2)后台代码;Rss.aspx.cs20

21
private void Page_Load(object sender, System.EventArgs e)22
{ 23
Response.ContentType="text/xml";24
Response.Write(GetRSS());25
}26

27
/// <summary>28
/// 取得聚合文章29
/// </summary>30
/// <returns></returns>31
public string GetRSS()32
{33
News t=new News();//自己的业务类34
DataSet ds=t.GetListByClass(1);//根据类别得到数据35
36
StringBuilder strCode=new StringBuilder();37
strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");38
strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"");39
strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" ");40
strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">");41
strCode.Append("<channel>");42
strCode.Append("<title>李天平RSSDemo</title>");43
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");44
strCode.Append("<description>天道酬勤</description> "); 45
strCode.Append("<copyright>Copyright 2005</copyright> "); 46
47
foreach(DataRow row in ds.Tables[0].Rows)48
{49
string Id=row["Id"].ToString();50
string title=row["title"].ToString();51
string description=row["description"].ToString();52
string pubdate=row["pubdate"].ToString();53
string ClassId=row["ClassId"].ToString();54
//string author=row["author"].ToString();55

56
strCode.Append("<item>");57
strCode.Append("<title>"+title+"</title>");58
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");59
strCode.Append("<subject>"+description+"</subject>");60
strCode.Append("<description><![CDATA["+description+"]]></description>"); 61
strCode.Append("<PubDate>"+pubdate+"</PubDate>");62
strCode.Append("<category>"+ClassId+"</category>");63
strCode.Append("</item>"); 64
}65
strCode.Append("</channel>");66
strCode.Append("</rss>"); 67
return strCode.ToString();68
}69

70

71
2.在线RSS阅读获取。72

73
页面代码:74
<P style="FONT-SIZE: 11px">75
Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>76
显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>77
<P style="FONT-SIZE: 11px">78
<asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>79
<BR>80
<asp:Label id="RssFeed" runat="server"></asp:Label></P>81

82
后台代码:83
/// <summary>84
/// 获得要显示的Feed种子数据85
/// </summary>86
/// <param name="RssUrl"></param>87
/// <param name="showNewsCount"></param>88
/// <returns></returns>89
public string LoadRSS(string RssUrl, int showNewsCount)90
{ 91
string strRssList = "";92
string strMsg;93
try94
{ 95
XmlDocument objXMLDoc = new XmlDocument(); 96
objXMLDoc.Load(RssUrl); 97
XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item"); 98
99
if(showNewsCount > 30)100
showNewsCount = 10; 101
if(showNewsCount < 1)102
showNewsCount = objItems.Count;103
104
string title="";105
string link=""; 106
int i;107

108
if(objXMLDoc.HasChildNodes == true)109
{110
i = 1;111
foreach(XmlNode objNode in objItems)112
{113
if(i<=showNewsCount)114
{115
if(objNode.HasChildNodes == true)116
{117
XmlNodeList objItemsChild = objNode.ChildNodes;118
foreach(XmlNode objNodeChild in objItemsChild)119
{120
switch(objNodeChild.Name)121
{122
case "title":123
title = objNodeChild.InnerText;124
break;125
case "link":126
link = objNodeChild.InnerText;127
break; 128
} 129
} 130
i = i+1;131
strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>"; 132
} 133
}134
} 135
}136
strMsg = strRssList;137
}138
catch139
{140
strMsg = "RSS Feed 源数据出错!";141
}142
return strMsg;143
}144

145
//获取按钮,获取指定RSS146
private void GetFeed_Click(object sender, System.EventArgs e)147
{148
if(FeedUrl.Text == "")//RSS地址149
{150
RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!";151
return ;152
} 153
RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目 154
}155

156
3.无刷新动态更新的在线RSS阅读获取157

158
<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>159
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >160
<HTML>161
<HEAD>162
<title>XmlHttp</title>163
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">164
<meta name="CODE_LANGUAGE" Content="C#">165
<meta name="vs_defaultClientScript" content="JavaScript">166
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">167
<style>td { font-size: 9pt}168
</style>169
<script>170
<!-- 171
var oDiv 172
var xh 173
function getXML()174
{ 175
xh =new ActiveXObject("Microsoft.XMLHTTP"); 176
oDiv = document.getElementById("rssitem");177
oDiv.style.display= "";178
try179
{180
//如果是本地改成下面语句直接读取181
//xh.open("GET","/Rss.aspx",false); 182
xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);183
xh.send(null);184
loadData(xh,oDiv);185
}186
catch(e)187
{188
error(oDiv);189
}190
}191
function loadData(xh,oDiv)192
{193
if (xh.readyState == 4)194
{195
xml = xh.responsexml;196
var i;197
var nodes = xml.selectNodes("/rss/channel/item");198
var bloglink = xml.selectSingleNode("/rss/channel/link").text;199
oDiv.innerHTML = "";200
var html; 201
for(i=0;i<nodes.length;i++)202
{ 203
204
html += "<div >";205
html += " <div >";206
html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";207
html += " </div>";208
html += " <div >";209
html += " " +nodes[i].selectSingleNode("description").text;210
html += " </div>" 211
//html += " </div>";212
html += "</div><hr>";213

214
}215
oDiv.innerHTML = html;216
}217
else218
{219
error(oDiv);220
}221
}222

223
function error(oDiv)224
{225
oDiv.innerHTML = "载入失败";226
}227
-->228
</script>229
</HEAD>230
<body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);">231
<form id="Form1" method="post" runat="server">232
<div align=center>233
<table cellpadding="0" cellspacing="0" border="0" width="80%">234
<tr>235
<td>236
<div id="rssitem" style="WIDTH:80%">数据载入中
</div>237
</td>238
</tr>239
</table>240
</div>241
</form>242
</body>243
</HTML>244

245

246

浙公网安备 33010602011771号