基於.net技術的 Rss 訂閱開發

來源:互聯網
上載者:User
下午坐著沒事做,看著最近很流行的那些Rss訂閱   感覺蠻好玩的  就索性把學院網站也搞個Rss訂閱通道 以方面師生及時的瞭解校園最新動向,以及各部門網站的相關資訊,然後就開始了第一個Rss開發。
        RSS(Really Simple Syndication,真正簡單的連鎖)是一種 Web 內容連鎖格式。RSS 成為通過 Web 連鎖新聞內容的標準格式。剛好我現在vs的環境也是.net,因為在.NET3.5下,MS整合了RSS對象。這樣一改變,就很大的方便了建立和讀取RSS了。
       首先搞了個Rss.aspx頁面,在Page_Load方法裡面顯示讓它以標準的xml格式輸出
      Response.Cache.SetNoStore();
      Response.ContentType = "application/xml";
 
      然後根據需要訂閱的頁面傳過來的參數進行一番判斷。把所有合格資源都放在DataTable裡面。
 
     接著用MemoryStream對象對xml進行操作,就不多說了,看了代碼就會明白,同時也給自己做個備忘。如下:
    

        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();

  要注意的是:
   1.XML格式是大小寫敏感的,這就意味著,XML元素的起始和終止標籤必須匹配,拼字和大小寫都必須一致。

  2.RSS2.0的根項目是< rss>元素,這個元素可以有一個版本號碼的屬性,例如:

< rssversion="2.0">
...
< /rss>

< rss>元素只有一個子項目< channel>,用來描述彙總的內容。在< channel>元素裡面有三個必需的子項目,用來描述Web網站的資訊。這三個元素是:

title—定義彙總檔案的名稱,一般來說,還會包括Web網站的名稱;
link—Web網站的URL;
description—Web網站的一段簡短的描述。
除此之外,還有一些可選元素來描述網站資訊。這些元素的更多資訊請參見RSS2.0規範。

每一個新聞項目放在一個單獨的< item>元素中。< channel>元素可以有任意數量的< item>元素。每個< item>元素可以有多種的子項目,唯一的要求是最少必須包含< title>元素和< description>元素其中一個作為子項目。以下列出了一些相關的< item>子項目:

 

title—新聞項目的標題;

link—新聞項目的URL;

description—新聞項目的大綱;

author—新聞項目的作者;

pubDate—新聞項目的發布日期

3.< item>子項目尤其要注意的是pubDate的格式,RSS要求日期必須按照RFC822日期和時間規範進行格式化,此格式要求:開頭是一個可選的3字母星期縮寫加一個逗號,

 

.

 

接著必須是日加上3字母縮寫的月份和年份,最後是一個帶時區名的時間。

我們可以用Stirng.foemat()來轉化如期格式,就如我上面那個例子。

最終結果:
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.