基于.NET技術(shù)的RSS訂閱開(kāi)發(fā)實(shí)例
首先搞了個(gè)Rss.aspx頁(yè)面,在Page_Load方法里面顯示讓它以標(biāo)準(zhǔn)的xml格式輸出
- Response.Cache.SetNoStore();
- Response.ContentType = "application/xml";
然后根據(jù)需要訂閱的頁(yè)面?zhèn)鬟^(guò)來(lái)的參數(shù)進(jìn)行一番判斷。把所有符合條件的資源都放在DataTable里面。
接著用MemoryStream對(duì)象對(duì)xml進(jìn)行操作,就不多說(shuō)了,看了代碼就會(huì)明白,同時(shí)也給自己做個(gè)備忘。RSS訂閱開(kāi)發(fā)實(shí)例如下:
- MemoryStream ms = new MemoryStream();
- XmlTextWriter xmlTW = new XmlTextWriter(ms, Encoding.UTF8);
- xmlTW.Formatting = Formatting.Indented;
- xmlTW.WriteStartDocument();
- xmlTW.WriteStartElement("rss");
- xmlTW.WriteAttributeString("version", "2.0");
- xmlTW.WriteStartElement("channel");
- if (WebID == 0)
- {
- }
- else
- {
- xmlTW.WriteElementString("title", "歡迎訂閱"+WebDs.Tables[0].Rows[0]["Web_Name"].ToString()+">>"+ColumnDs.Tables[0].Rows[0]["ColumnName"].ToString());
- xmlTW.WriteElementString("link", ColumnDs.Tables[0].Rows[0]["CoulumnUrl"].ToString());
- xmlTW.WriteElementString("description", "");
- }
- DataTable dt = ds.Tables[0];
- foreach (DataRow dr in dt.Rows)
- {
- xmlTW.WriteStartElement("item");
- xmlTW.WriteElementString("title", dr["Article_Title"].ToString());
- xmlTW.WriteElementString("link", GetNewsLink(dr));
- xmlTW.WriteElementString("pubDate",string.Format("{0:R}",dr["CreateTime"]));
- xmlTW.WriteElementString("author", dr["UserLogin_FullName"].ToString());
- xmlTW.WriteElementString("description", Pub_Config.nohtml(Pub_Config.Substrin(dr["Article_Body"], 400)));
- xmlTW.WriteEndElement();
- }
- xmlTW.WriteEndElement();
- xmlTW.WriteEndElement();
- xmlTW.WriteEndDocument();
- xmlTW.Flush();
- byte[] buffer = ms.ToArray();
- Response.Write(Encoding.UTF8.GetString(buffer));
- Response.End();
- xmlTW.Close();
- ms.Close();
- ms.Dispose();
RSS訂閱開(kāi)發(fā)實(shí)例中要注意的是:
1.XML格式是大小寫(xiě)敏感的,這就意味著,XML元素的起始和終止標(biāo)簽必須匹配,拼寫(xiě)和大小寫(xiě)都必須一致。
2.RSS2.0的根元素是< rss>元素,這個(gè)元素可以有一個(gè)版本號(hào)的屬性,例如:
- < rssversionrssversion="2.0">
- ...
- < /rss>
< rss>元素只有一個(gè)子元素< channel>,用來(lái)描述聚合的內(nèi)容。在< channel>元素里面有三個(gè)必需的子元素,用來(lái)描述Web站點(diǎn)的信息。這三個(gè)元素是:
title—定義聚合文件的名稱,一般來(lái)說(shuō),還會(huì)包括Web站點(diǎn)的名稱;
link—Web站點(diǎn)的URL;
description—Web站點(diǎn)的一段簡(jiǎn)短的描述。
除此之外,還有一些可選元素來(lái)描述站點(diǎn)信息。這些元素的更多信息請(qǐng)參見(jiàn)RSS2.0規(guī)范。
每一個(gè)新聞項(xiàng)目放在一個(gè)單獨(dú)的< item>元素中。< channel>元素可以有任意數(shù)量的< item>元素。每個(gè)< item>元素可以有多種的子元素,唯一的要求是最少必須包含< title>元素和< description>元素其中一個(gè)作為子元素。以下列出了一些相關(guān)的< item>子元素:
title—新聞項(xiàng)目的標(biāo)題;
link—新聞項(xiàng)目的URL;
description—新聞項(xiàng)目的大綱;
author—新聞項(xiàng)目的作者;
pubDate—新聞項(xiàng)目的發(fā)布日期
3.< item>子元素尤其要注意的是pubDate的格式,RSS要求日期必須按照RFC822日期和時(shí)間規(guī)范進(jìn)行格式化,此格式要求:開(kāi)頭是一個(gè)可選的3字母星期縮寫(xiě)加一個(gè)逗號(hào),
.
接著必須是日加上3字母縮寫(xiě)的月份和年份,***是一個(gè)帶時(shí)區(qū)名的時(shí)間。
我們可以用Stirng.foemat()來(lái)轉(zhuǎn)化如期格式,就如我上面那個(gè)例子。
RSS訂閱開(kāi)發(fā)實(shí)例的最終結(jié)果:
【編輯推薦】