C#實現RSS訂閱

 今天朋友問我怎麼操作RSS,說實話以前還真沒弄過,甚至就不知道什麼是RSS。谷哥了一下才發現原來RSS就是一個XML文檔啊


首先介紹下什麼是RSS,來自百度百科:


RSS(簡易信息聚合,也叫聚合內容)是一種描述和同步網站內容的格式。RSS可以是以下三個解釋的其中一個: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其實這三個解釋都是指同一種Syndication的技術。RSS目前廣泛用於網上新聞頻道,blog和wiki,主要的版本有0.91, 1.0, 2.0。使用RSS訂閱能更快地獲取信息,網站提供RSS輸出,有利於讓用戶獲取網站內容的最新更新。網絡用戶可以在客戶端藉助於支持RSS的聚合工具軟件,在不打開網站內容頁面的情況下閱讀支持RSS輸出的網站內容。


下面就通過這個規範來對RSS進行解析提取數據:

 

  1. string rsspath = "http://dabao.im/rss.php";//RSS地址 

  2.         XmlDocument doc = new XmlDocument();//創建文檔對象

  3. try

  4.         { 

  5.             doc.Load(rsspath);//加載XML 包括HTTP:// 和本地

  6.         } 

  7. catch (Exception ex) 

  8.         { 

  9. //異常處理

  10.         } 

  11.         XmlNodeList list = doc.GetElementsByTagName("item"); //獲得項           

  12. foreach (XmlNode node in list) //循環每一項

  13.         { 

  14.             XmlElement ele = (XmlElement)node; 

  15. string title = ele.GetElementsByTagName("title")[0].InnerText;//獲得標題

  16. string link = ele.GetElementsByTagName("link")[0].InnerText;//獲得聯接

  17. string description = ele.GetElementsByTagName("description")[0].InnerText;//獲得簡介

  18. //添加綁定操作

  19.         } 

 


知識擴展

 

【轉】RSS規範

RSS是 Really Simple Syndication的縮寫(對rss2.0而言,是這三個詞的縮寫,對rss1.0而言則是RDF Site  Summary的縮寫,1.0與2.0走的是兩個體系)
RSS 基於XML,所有的 RSS 必須遵循w3c網站上公佈的XML 1.0  規範。
在一個RSS文檔中,根元素是  <rss>,帶有一個必備屬性version,用以指明該文檔遵循的rss規範,如果rss文檔遵循本規範,則version值必須是2.0。
<rss>元素只有一個子元素,包含關於頻道的一些信息。頻道(channel)是整個blog,項(item)指一篇文章或日誌(也有稱這爲post)。

RSS2.0元素channel的子元素列表


元素描述值域重要性舉例
title頻道名稱必備GoUpstate.com News Headlines
link頻道的URL必備http://www.goupstate.com/
Description頻道的描述必備The latest news from GoUpstate.com, a  Spartanburg Herald-Journal Web site.
language頻道文章所用語言,可用netscape或w3c推薦的列表可選en-us
copyright頻道內容的版權說明可選Copyright 2002, Spartanburg  Herald-Journal
managingEditor責任編輯的email可選[email protected] (George  Matesky)
webMaster負責頻道技術事務的網站管理員email可選[email protected] (Betty  Guernsey)
pubDate頻道內容發佈日期,格式遵循RFC822格式(年份可爲2們或4位)可選Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate頻道內容最後的修改日期可選Sat, 07 Sep 2002 09:42:31 GMT
category指定頻道所屬的一個或幾個類別可選<category>Newspapers</category>
generator生成該頻道的程序名可選MightyInHouse Content System  v2.3
docs指向該RSS文件所用格式說明的URL可選http://blogs.law.harvard.edu/tech/rss
cloudAllows processes to register with a cloud to be  notified of updates to the channel, implementing a lightweight publish-subscribe  protocol for RSS feeds. More info h可選<cloud domain="rpc.sys.com" port="80"  path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl有效期,用以指明該頻道可被緩存的最長時間分鐘爲單位可選<ttl>60</ttl>
image指定一個 GIF或JPEG或PNG圖片,用以與頻道一起顯示可選
rating這個頻道的分級(主要指成人、限制、兒童等)可選
textInput指定一個text輸入框供用戶輸入,具體信息及功能未定。可選
skipHours提示新聞聚合器,那些小時時段它可以跳過。可選
skipDays提示新聞聚合器,那些天它可以跳過。可選

RSS2.0元素channel的子元素image的子元素列表


元素(Element)描述值域重要性舉例(Example)
url圖片的url必備
title圖片的標題,用於http的alt屬性必備
link網站的url(實際中常以頻道的url代替)必備
width圖片的寬度(象素爲單位)最大144,默認88可選
height圖片的高度(象素爲單位)最大400,默認31可選
description用於link的title屬性可選

RSS2.0元素channel的子元素cloud的子元素列表


元素(Element)描述值域重要性舉例(Example)
domainCloud程序所在機器的域名或IP地址radio.xmlstoragesystem.com
port訪問clound程序所通過的端口80
path程序所在路徑(不一定是真實路徑)/RPC2
registerProcedure註冊的可提供的服務或過程xmlStorageSystem.rssPleaseNotify
protocol協議xml-rpc, soap , http-post 之一xml-rpc

RSS2.0元素channel的子元素textInput的子元素列表


元素(Element)描述值域重要性舉例(Example)
titleSubmit按鈕的標籤必備
description解釋text輸入區必備
nameText area對象的名字必備
link處理提交的請求的cgi程序必備

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章