在Python要讀取RSS可以使用FeedParser。那麼在ASP.net裡面呢?難道我們要自己發出request去取得XML,並且自己用XmlReader去解析XML裡面的DOM物件嗎? 當然不用這麼麻煩囉。 在ASP.net裡面,我們可以使用RssToolkit 2.0,這是一個開放原始碼(Open Source)的RSS處理函式庫。裡面提供了很完善的RSS處理函式。你可以自己燒制RSS feed,也可以透過它去解析RSS。
在Python要讀取RSS可以使用FeedParser。那麼在ASP.net裡面呢?難道我們要自己發出request去取得XML,並且自己用XmlReader去解析XML裡面的DOM物件嗎? 當然不用這麼麻煩囉。 在ASP.net裡面,我們可以使用RssToolkit 2.0,這是一個開放原始碼(Open Source)的RSS處理函式庫。裡面提供了很完善的RSS處理函式。你可以自己燒制RSS feed,也可以透過它去解析RSS。
在CodePlex上的RssToolkit 2.0教學其實還蠻清楚的,對我而言夠用了。
這裡特別說一下其中兩個常用的方法:
1.使用RssDataSource (看這裡) 有使用過SqlDataSource嗎?沒錯,這兩個東西其實很像。 在頁面上拉出一個RssDataSource,設定好RssDataSource的RSS資料來源路徑,例如我的RSS: http://feeds.feedburner.com/FinalevilsBlog。 再拉一個GirdView,設定GridView的DataSource為RssDataSource就可以看到GridView化身成為RSS閱讀器了。
2.使用RssDocument 類別(看這裡)
RssToolkit.Rss.RssDocument rss =
RssToolkit.Rss.RssDocument.Load(
new System.Uri("http://feeds.feedburner.com/FinalevilsBlog"));
GridView1.DataSource = rss.SelectItems();
GridView1.DataBind();或是你也可以在rss.Channel.Items裡面找到需要的Property。
Items是一個RssItem的集合。裡面包含了你會需要用到的各種屬性。像是PubDate文章的發布日期、Link文章的網址、Description文章內容、Author文章作者、Categories文章分類等等。 其中Link被我用紅色標示起來。這是有原因的。
因為當你把RssToolkit 2.0的原始碼下載下來。在使用的時候會發現解析出來的Link是有問題的。他只能找到文章所在部落格的部落格網址,而非文章本身的網址。 因此上網Google了一下。找到解決方法。參考自A Small Fix for RSSToolkit 2.0 原來是原始碼中Resources\AtomToRSS20.xsl,這個XSL檔案有錯誤。其他兩個錯誤不知是啥。 但是第43行,原本是
<xsl:value-of select="//*[name()='link']/@href"/>要替換成
<xsl:value-of select="child::*[name()='link']/@href"/>差別在加上了child::這樣解析的結果就會正確了。