基于.NET技術(shù)的RSS訂閱開發(fā)實例
首先搞了個Rss.aspx頁面,在Page_Load方法里面顯示讓它以標準的xml格式輸出
- Response.Cache.SetNoStore();
- Response.ContentType = "application/xml";
然后根據(jù)需要訂閱的頁面?zhèn)鬟^來的參數(shù)進行一番判斷。把所有符合條件的資源都放在DataTable里面。
接著用MemoryStream對象對xml進行操作,就不多說了,看了代碼就會明白,同時也給自己做個備忘。RSS訂閱開發(fā)實例如下:
- 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訂閱開發(fā)實例中要注意的是:
1.XML格式是大小寫敏感的,這就意味著,XML元素的起始和終止標簽必須匹配,拼寫和大小寫都必須一致。
2.RSS2.0的根元素是< rss>元素,這個元素可以有一個版本號的屬性,例如:
- < rssversionrssversion="2.0">
- ...
- < /rss>
< rss>元素只有一個子元素< channel>,用來描述聚合的內(nèi)容。在< channel>元素里面有三個必需的子元素,用來描述Web站點的信息。這三個元素是:
title—定義聚合文件的名稱,一般來說,還會包括Web站點的名稱;
link—Web站點的URL;
description—Web站點的一段簡短的描述。
除此之外,還有一些可選元素來描述站點信息。這些元素的更多信息請參見RSS2.0規(guī)范。
每一個新聞項目放在一個單獨的< item>元素中。< channel>元素可以有任意數(shù)量的< item>元素。每個< item>元素可以有多種的子元素,唯一的要求是最少必須包含< title>元素和< description>元素其中一個作為子元素。以下列出了一些相關(guān)的< item>子元素:
title—新聞項目的標題;
link—新聞項目的URL;
description—新聞項目的大綱;
author—新聞項目的作者;
pubDate—新聞項目的發(fā)布日期
3.< item>子元素尤其要注意的是pubDate的格式,RSS要求日期必須按照RFC822日期和時間規(guī)范進行格式化,此格式要求:開頭是一個可選的3字母星期縮寫加一個逗號,
.
接著必須是日加上3字母縮寫的月份和年份,***是一個帶時區(qū)名的時間。
我們可以用Stirng.foemat()來轉(zhuǎn)化如期格式,就如我上面那個例子。
RSS訂閱開發(fā)實例的最終結(jié)果:
【編輯推薦】