2012-06-13 83 views
5

我想用SyndicationFeed類做一個簡單的RSS閱讀器。建立一個簡單的RSS閱讀器,檢索內容

有一些標準標籤,如<title><link><description> ...這是沒有問題的。

但還有一些其他標籤。例如,在由WordPress創建的this feed中,有<content:encoded>標籤。我認爲其他網站的內容部分可能還有其他標籤。對?

我想知道,如何找到每篇文章的主要內容,有沒有什麼標準?我應該尋找哪些標籤?

(例如,一個網站可能使用<content:encoded>但其他一些只使用<description>或別人使用其他標準...我不知道要爲檢索主要內容後做)

PS:我正在使用此代碼來測試我的簡單RSS閱讀器:

 var reader = XmlReader.Create("http://feed.2barnamenevis.com/2barnamenevis"); 
     var feed = SyndicationFeed.Load(reader); 

     string s = ""; 
     foreach (SyndicationItem i in feed.Items) 
     { 
      s += i.Title.Text + "<br />" + i.Summary.Text + "<br />" + i.PublishDate.ToString() + "<br />"; 
      foreach (SyndicationElementExtension extension in i.ElementExtensions) 
      { 
       XElement ele = extension.GetObject<XElement>(); 
       s += ele.Name + " :: " + ele.Value + "<br />"; 
      } 
      s += "<hr />"; 
     } 
     return s; 
+0

取決於您想要支持的內容。內容元素不是RSS2.0的一部分,但屬於Atom(rss 4287)。 閱讀RSS2.0規範http://cyber.law.harvard.edu/rss/rss./rss.html#hrelementsOfLtitemgt –

+0

上次我試着寫一個RSS閱讀器,我最終放棄了,因爲我意識到有大量的訂閱源在那裏不要遵循任何標準。在閱讀Feed時,那裏的主要讀者必須非常寬容。我覺得它有點像閱讀網頁的瀏覽器 - 如果人們遵循這些標準,那就沒有問題,但如果不是的話,那麼你會整天寫一些自定義的東西來處理一次性場景。 –

+0

@JoeEnos其他供稿閱讀器應用程序有什麼作用?他們可以閱讀每一個飼料。他們是怎麼做到的?! –

回答

1

我發現Argotic聚合框架(感謝來自JoeEnos)。

Argotic有許多擴展,可用於處理非標準的元素。

例如,您可以使用Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension檢索<content:encoded>。你可以看到一個例子here。 (如果例如內容返回null,你只需要使用MyRssItem.Description

一些其他有用的擴展是WellFormedWebCommentsSyndicationExtension(用於檢索評論供稿網址)和SiteSummarySlashSyndicationExtension(用於檢索評論數)。

4

從我們在評論中的討論中,我可能會建議與第三方供應商合作,而不是從零開始構建 - ArgoticRSS.NET都看起來很有希望。

+0

RSS.NET已關閉。 –