[ASP.Net]用RssToolKit2.0解析RSS,製作RSS閱讀器

  • 3232
  • 0

在Python要讀取RSS可以使用FeedParser。那麼在ASP.net裡面呢?難道我們要自己發出request去取得XML,並且自己用XmlReader去解析XML裡面的DOM物件嗎? 當然不用這麼麻煩囉。 在ASP.net裡面,我們可以使用RssToolkit 2.0,這是一個開放原始碼(Open Source)的RSS處理函式庫。裡面提供了很完善的RSS處理函式。你可以自己燒制RSS feed,也可以透過它去解析RSS。

 


HI!我是finalevil,這是我的分站,

歡迎您訂閱我的RSS ,或是前往本站發表意見。


image

 

在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。

image

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::這樣解析的結果就會正確了。

 

 

HI!我是finalevil,這是我的分站,

歡迎您訂閱我的RSS ,或是前往本站發表意見。