1如见Web2.0被吵的如火如荼,同时也有很多的评论褒贬不一。有人说Web2.0就是“一帮人在看皇帝的新装而已”。也有人说Web2.0将是一场变革。无论这些争论有没有价值,但我相信,存在就有它的必然性。也许Web2.0更像是一种商业模式,一个观念的变革而非技术。
2 不管怎样,它来了,你准备好了吗?
3 说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。
4RSS毋容置疑就是其重要的应用之一。
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
131.在线生成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
712.在线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
1563.无刷新动态更新的在线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
2 不管怎样,它来了,你准备好了吗?
3 说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。
4RSS毋容置疑就是其重要的应用之一。
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
131.在线生成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
712.在线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
1563.无刷新动态更新的在线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