2009-08-29 6 views
9

Ist es praktisch/möglich, Serialisierung zu verwenden, um Daten aus einem RSS-Feed zu lesen? Ich möchte grundsätzlich Informationen aus meiner Netflix-Warteschlange (bereitgestellt von einem RSS-Feed) abrufen, und ich versuche zu entscheiden, ob Serialisierung machbar/möglich ist, oder ob ich nur etwas wie XMLReader verwenden sollte. Wie könnte man den Feed am besten von einer URL herunterladen? Ich habe nie Dateien von anderen als Laufwerken gezogen, also bin ich mir nicht sicher, wie ich das machen soll.Deserialisieren eines RSS-Feeds in .NET

Antwort

18

Wenn Sie LINQ verwenden, LINQ to XML ist eine einfache Möglichkeit, die Grundlagen eines RSS-Feeds Dokument zu erhalten.

Dies ist von something I wrote aus meinem Blog ist eine Sammlung von anonymen Typen zur Auswahl aus RSS-Feeds, zum Beispiel:

protected void Page_Load(object sender, EventArgs e) 
{ 
    XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia"); 

    var feeds = from feed in feedXML.Descendants("item") 
       select new 
       { 
       Title = feed.Element("title").Value, 
       Link = feed.Element("link").Value, 
       Description = feed.Element("description").Value 
       }; 

    PostList.DataSource = feeds; 
    PostList.DataBind(); 
} 

Sie sollten in der Lage sein, etwas sehr ähnlich gegen Ihren Netflix-Feed zu verwenden.

3

Wenn Sie .NET 3.0 oder 3.5 ... verwenden, würde ich vorschlagen, einen XMLReader zu verwenden, um das Dokument in ein XDocument zu lesen. Sie können dann LINQ to XML verwenden, um den RSS-Feed abzufragen und ihn in etwas Nutzbares zu rendern.

Etwas zu bauen, um das XML zu deserialisieren, ist ebenfalls machbar und wird genauso gut funktionieren (wenn nicht sogar besser), aber es wird mehr Zeit in Anspruch nehmen.

Jeder Weg wird funktionieren ... tun, was Sie bequemer sind (oder, wenn Sie versuchen, XML-Serialisierung zu lernen, gehen Sie dafür und lernen etwas Neues).

15

Das .NET 3.5-Framework hinzugefügt Syndication-Unterstützung. Der System.ServiceModel.Syndication Namespace bietet eine Reihe von Arten Feeds, Feed-Inhalte und Kategorien, Futtermittel Formatierung (RSS 2.0, Atom 1.0) usw.

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.aspx

Sie ein paar Optionen verwalten für Serialisierung, aber die einfachste ist wahrscheinlich am besten hier beschrieben:

http://msdn.microsoft.com/en-us/library/bb536530.aspx

+0

habe ich einen Blick in diese, aber es scheint nur der Namensraum Serialisierungsoptionen bietet, nicht Deserialisierung Optionen, wenn ich etwas übersehen. – MGSoto

+0

Sie "Deserialisieren" über die statische Methode SyndicationFeed.Load. Es erkennt automatisch das Eingabeformat. Wenn Sie mehr Kontrolle benötigen, können Sie die Formatierer direkt verwenden ... alle haben eine ReadFrom-Methode, die einen XmlReader verwendet. – jrista

+0

Ich werde einen Blick darauf werfen, wenn ich nach Hause komme, das ist toll zu wissen, ob ich jemals ein anderes RSS-Projekt machen muss. – MGSoto

2

Check out this link für eine ziemlich gründliche Download-Routine.

RSS ist im Grunde eine Ableitung von XML. Ich mag this link für das Definieren des RSS-Formats. This one hat ein wirklich einfaches Beispiel.

4
using System.ServiceModel.Syndication; 

public static SyndicationFeed GetFeed(string uri) 
    { 
     if (!string.IsNullOrEmpty(uri)) 
     { 
      var ff = new Rss20FeedFormatter(); // for Atom you can use Atom10FeedFormatter() 
      var xr = XmlReader.Create(uri); 
      ff.ReadFrom(xr); 
      return ff.Feed;    
     } 
     return null; 
    } 
Verwandte Themen