2009-08-29 12 views
9

Czy korzystanie z serializacji do odczytu danych z kanału RSS jest praktyczne/możliwe? Zasadniczo chcę pobierać informacje z mojej kolejki Netflix (dostarczanej z kanału RSS) i próbuję zdecydować, czy serializacja jest możliwa/możliwa, czy też powinienem użyć czegoś takiego jak XMLReader. Jaki byłby najlepszy sposób pobrania kanału z adresu URL? Nigdy nie wyciągałem plików poza napędami, więc nie jestem pewien, jak to zrobić.Deserializowanie kanału RSS w .NET

Odpowiedz

18

Jeśli można użyć LINQ, LINQ do XML jest łatwym sposobem, aby dostać się na podstawach dokumentu RSS.

To z something I wrote wybrać się zbiór anonimowych typów z kanału RSS mojego bloga, na przykład:

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(); 
} 

Powinieneś móc używać coś bardzo podobnego na kanale Netflix.

3

Jeśli używasz .NET 3.0 lub 3.5 ... to sugerowałbym użycie XMLReadera do czytania dokumentu na XDocument. Następnie możesz użyć LINQ do XML, aby zapytać i renderować kanał RSS w coś użytecznego.

Budowanie czegoś w celu odseparowania XML jest również wykonalne i będzie działać równie dobrze (jeśli nie lepiej), ale będzie więcej czasu na stworzenie.

Tak czy inaczej zadziała ... zrób to, z czym czujesz się lepiej (lub, jeśli chcesz nauczyć się serializacji XML, idź do niego i naucz się czegoś nowego).

15

Platforma .NET 3.5 dodała obsługę syndykowania. System.ServiceModel.Syndication nazw zapewnia kilka rodzajów do zarządzania karmę, treści paszowym i kategorie, formatowanie Feed (RSS 2.0 Atom 1.0) itd

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

masz kilka opcji serializacji, ale najprostszą jest prawdopodobnie najlepiej opisany tutaj:

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

+0

wziąłem spojrzenie na to, ale wydaje się, że przestrzeń nazw zawiera tylko opcje serializacji, a nie opcje deserializacjia, chyba że coś przeoczyłem. – MGSoto

+0

"Odserializuj" za pomocą metody statycznej SyndicationFeed.Load. Automatycznie wykrywa format wejściowy. Jeśli potrzebujesz większej kontroli, możesz użyć formaterów bezpośrednio ... wszystkie one mają metodę ReadFrom, która pobiera XmlReader. – jrista

+0

Zajmę się tym, kiedy wrócę do domu, świetnie jest wiedzieć, czy kiedykolwiek potrzebuję zrobić kolejny projekt RSS. – MGSoto

2

Zapoznaj się z this link, aby uzyskać dość dokładną procedurę pobierania.

RSS jest w zasadzie pochodną XML. Podoba mi się this link do definiowania formatu RSS. This one ma naprawdę podstawową próbkę.

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; 
    } 
Powiązane problemy