2009-02-23 12 views
51

Od dawna chciałbym zrobić czytnik RSS (tylko dla zabawy), ale nie mam pojęcia, od czego zacząć. Nie rozumiem nic na temat RSS. Czy są jakieś dobre tutoriale na temat RSS i jak je wdrożyć w aplikacji (nie samouczek, jak zrobić czytnik RSS, to byłoby zbyt łatwe).Jak mogę zacząć tworzyć czytnik RSS C#?

Odpowiedz

51

Zobacz

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

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

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

Zasadniczo istnieje wiele rzeczy w .NET 3.5 ram, dokłada chrząknięcie-pracę parsowania i reprezentujących pasz; Nie jest trudno napisać 30-wierszową aplikację, która pobiera adres URL kanału i pobiera plik danych oraz drukuje tytuł i autora wszystkich elementów, na przykład. (Działa dla RSS 2.0 (nie inni) lub Atom!).

+2

Zobacz np. u góry strony http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!164.entry dla 10-liniowego fragmentu kodu (F #, ale najczęściej po prostu wywołującego API framework), które przeniesie Cię z Uri do drukowania kanału w około 30 sekund kodowania. – Brian

+1

Bardzo pomocne linki, jeśli ktoś ma zamiar parsować rss ** to są linki! ** –

+2

Mam pełną aplikację RSS, RDF i ATOM Reader i samouczek na mojej stronie http://www.jarloo.com/rumormill-5/ Pokazuje, jak pisać własne parsery za pomocą LINQ. – Kelly

0

Jeśli piszesz w pełni funkcjonalny czytnik bez użycia biblioteki, także myślę, że istnieją ATOM feeds do parsowania.

11

Jeśli koncentrujemy się na tworzeniu RSS Reader a nie na RSS analizowania logiki, warto powierzyć tworzenie/czytanie kanałów RSS za pomocą tego darmowy RSS Biblioteka nazywa Argotic na CodePlex.com

0

RSS jest sam naprawdę proste. Tylko opis XML kanału i lista pozycji na tym kanale (ewentualnie z plikami dołączonymi do każdego przedmiotu). Śledzenie aktualizacji jest trochę trudne, a zarządzanie kodowaniem i datami/datami postów również jest trudne. Prawdziwym koszmarem są różne "interpretacje" formatu RSS, z którego korzystają różne witryny. Jeśli naprawdę piszesz czytnik kanałów, możesz zacząć od parsowania Atoma, ponieważ jest to bardziej standardowy format i może Ci się jeszcze bardziej przydać, z dobrym projektem, z którego oddzieli się RSS. Ale tak naprawdę powinieneś po prostu użyć biblioteki parsowania RSS - najlepiej najbardziej kompatybilnej (ale nie płacisz za bibliotekę RSS, są one dość powszechne).

0

RSS to dialekt XML, więc jeśli znasz XML, część problemu została rozwiązana. Jeśli chcesz rozpocząć na projekcie, należy rozważyć patrząc na projektach open source już tam:

http://www.codeplex.com/site/search?projectSearchText=RSS%20Reader

CodePlex (powyżej) jest dobrym miejscem do rozpoczęcia, ponieważ większość z tych projektów będzie w C# .

6

Jako kolejny plakat rekomendowany, najlepszym rozwiązaniem są klasa SyndicationFeed i Argotic.

Jeśli wydajność jest problemem, klasa SyndicationFeed będzie znacznie lepsza. Oceniłem to jako około 9 razy szybciej niż Argotic na moim sprzęcie.

Problem, który miałem z klasą SyndicationFeed, polegał na tym, że potrafił pomyślnie analizować losowe dane z sieci. Nie udaje się zaskakująco często z wyjątkiem XmlException.

Do moich zastosowań trzymam się Argotic. W końcu jest to open source, więc zawsze mogę wprowadzić zmiany, jeśli zajdzie taka potrzeba.

0

Rozważ przeczytanie kodu źródłowego dla RSS Bandit, który jest czytnikiem RSS C# Winforms (prawdopodobnie wkrótce WPF).

Powinieneś uzyskać kilka dobrych pomysłów po prostu przejściu przez aplikację.

1

Proponuję użyć tego

RSS.NET jest klasa .NET biblioteki open-source dla kanałów RSS. Zapewnia model wielokrotnego użytku obiektu do analizowania i zapisywania kanałów RSS. Jest w pełni kompatybilny z wersjami RSS 0.90, 0.91, 0.92 i 2.0.1, implementując wszystkie konstrukty.

Ponieważ standardowy syndykat feed nie obsługuje innych wersji rss.

0

Pracuję z RSS dość sporo i okazało się, że kanały ATOM są zazwyczaj łatwiejsze do parsowania przy użyciu klasy RssSyndication. W przypadku specyfikacji RSS 2.0, jeśli kanał jest rzeczywiście ważny, równie łatwo można załadować dokument XDokument z identyfikatora URI i przeanalizować dane w razie potrzeby.

0

Jeśli nie możesz użyć System.ServiceModel.Syndication.Syndicationfeed, na przykład, ponieważ używasz PCL (Portable Class Library). Napisałem jeden: FeedParserPCL. Można go znaleźć na NuGet.

Powiązane problemy