2012-06-13 8 views
5

Próbuję zrobić prosty czytnik RSS przy użyciu klasy SyndicationFeed.Budowanie prostego czytnika RSS, pobieranie zawartości

Istnieje kilka standardowych tagów, takich jak <title>, <link>, <description> ... nie ma z nimi problemu.

Ale są też inne znaczniki. na przykład w this feed, utworzonej przez WordPress, znajduje się tag <content:encoded>. Myślę, że mogą istnieć inne znaczniki dla części treści innych witryn. dobrze?

Chcę wiedzieć, jak znaleźć główną treść każdego posta, czy są jakieś standardy? jakich tagów powinienem szukać?

(na przykład witryna może używać <content:encoded> ale jakiś inny po prostu użyć <description> lub ktoś użyć innego standardu ... nie wiem, co robić do pobierania główny treść postu)

PS: Używam tego kodu do testowania mojego prostego czytnika 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

Zależy od tego, co chcesz wspierać. Element zawartości nie jest częścią RSS2.0, ale jest z Atomu (rss 4287). Przeczytaj specyfikację RSS2.0 http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt –

+0

Kiedy ostatnio spróbowałem napisać czytnik RSS, ostatecznie zrezygnowałem, gdy zdałem sobie sprawę, że znaczna liczba kanałów jest dostępna nie stosuj się do żadnych norm. Główni czytelnicy muszą być bardzo wyrozumiali, jeśli chodzi o czytanie kanałów. Widzę to trochę jak przeglądarki czytające strony internetowe - jeśli ludzie przestrzegają standardów, nie ma problemu, ale jeśli nie, będziesz pisać niestandardowe rzeczy przez cały dzień, aby poradzić sobie z jednorazowymi scenariuszami. –

+0

@JoeEnos Co robią inne aplikacje czytnika kanałów? Mogą czytać każdy kanał. Jak oni to robią ?! –

Odpowiedz

1

znalazłem Argotic ramowe Syndication (podziękowania od JoeEnos).

Argotic ma wiele rozszerzeń, które mogą być używane do obsługi elementów, które nie są standardowe.

Na przykład można użyć Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension do pobrania <content:encoded>. Możesz zobaczyć przykład here. (Jeśli to przykład zwraca null dla treści, należy po prostu użyć MyRssItem.Description)

kilka innych przydatnych rozszerzeń WellFormedWebCommentsSyndicationExtension (do pobierania komentarzy url paszy) i SiteSummarySlashSyndicationExtension (do pobierania komentarzy liczyć).

0

Zależy od tego, co chcesz wspierać. Element zawartości nie jest częścią RSS2.0, ale jest z Atomu (rss 4287).

lektura RSS2.0 specyfikacje http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt Czytaj Atom specyfikacje http://tools.ietf.org/html/rfc4287

+0

Chcę tylko wspierać popularne formaty, takie jak każda aplikacja czytnika kanałów, która jest dostępna ... Aplikacje czytnika kanałów mogą czytać wszystko, z dowolnym typem tagu treści ... –

4

Z naszej dyskusji w komentarzach, prawdopodobnie sugerowałbym, aby pójść z zewnętrznym dostawcą zamiast budować go od zera - Argotic i RSS.NET obie wyglądają obiecująco.

+0

RSS.NET jest wyłączony. –

Powiązane problemy