Come posso iniziare a creare un Lettore RSS C #?

Ho voluto creare un lettore RSS per un po ‘ora (solo per divertimento), ma non ho la minima idea di dove cominciare. Non capisco nulla di RSS. Ci sono dei buoni tutorial su RSS e su come implementarlo in un’applicazione (non un tutorial su come creare un lettore RSS, sarebbe troppo facile).

Vedere

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

Fondamentalmente c’è molto materiale nel framework .Net 3.5 che fa il lavoro di analisi e rappresentazione dei feed; non è difficile scrivere un’app di 30 linee che raccolga un URL del feed e scarica il feed e stampa il titolo e l’autore di tutti gli articoli, ad esempio. (Funziona per RSS 2.0 (non altri!) O Atom.)

Se ti stai concentrando sulla creazione di un lettore RSS e non sulla logica di analisi RSS, potresti debind la creazione / lettura dei feed RSS utilizzando questa libreria RSS gratuita chiamata Argotic su CodePlex.com

Come consigliato da un altro poster, la class SyndicationFeed e Argotic sono le migliori alternative.

Se le prestazioni sono un problema, la class SyndicationFeed sarà molto meglio. Il mio benchmark era circa 9 volte più veloce di Argotic sul mio hardware.

Il problema che ho avuto con la class SyndicationFeed è stata la sua capacità di analizzare con successo qualsiasi feed casuale dalla rete. Fallisce con una XmlException sorprendentemente spesso.

Per i miei usi, sto attaccando con Argotic. Dopotutto, è open source, quindi posso sempre apportare modifiche se necessario.

Ti suggerisco di usare questo

RSS.NET è una libreria di classi .NET open source per i feed RSS. Fornisce un modello di oggetti riutilizzabile per l’analisi e la scrittura di feed RSS. È completamente compatibile con le versioni RSS 0.90, 0.91, 0.92 e 2.0.1, implementando tutti i costrutti.

Poiché il feed standard di syndication non supporta altre versioni di rss.

È necessario lavorare con le specifiche XML RSS: http://cyber.law.harvard.edu/rss/rss.html

Se scrivi un lettore completo senza utilizzare alcuna libreria, pensa anche che ci siano feed ATOM da analizzare.

RSS stesso è davvero semplice. Solo una descrizione XML di un canale e un elenco di elementi su quel canale (eventualmente con file allegati a ciascun elemento). Tenere traccia degli aggiornamenti è un po ‘complicato, e gestire anche le codifiche e i tempi / le date è complicato. Il vero incubo sono tutte le diverse “interpretazioni” del formato RSS utilizzato da diversi siti. Se stai davvero scrivendo un lettore di feed, potresti voler iniziare con l’analisi di Atom, in quanto è un formato più standardizzato, e potrebbe farti diventare più veloce, con un buon design da ramificarsi in RSS da. In realtà, dovresti semplicemente usare una libreria di analisi RSS, preferibilmente la più compatibile disponibile (ma non pagare per una libreria RSS, sono abbastanza comuni).

L’RSS è un dialetto XML, quindi se conosci l’XML, hai risolto parte del problema. Se vuoi iniziare il tuo progetto, considera di guardare i progetti open source già disponibili:

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

CodePlex (sopra) è un buon punto di partenza, poiché la maggior parte dei progetti sarà in C #.

Prendi in considerazione la lettura del codice sorgente per RSS Bandit , che è un lettore RSS C # Winforms (possibilmente presto WPF).

Dovresti ottenere alcune buone idee semplicemente sfogliando l’applicazione.

Ho lavorato un po ‘con RSS e ho scoperto che i feed di ATOM sono in genere più semplici da analizzare usando la class RssSyndication. Per le specifiche RSS 2.0, se il feed è effettivamente valido, allora è altrettanto facile caricare un XDocument dall’URI e analizzare i dati secondo necessità.

Se non puoi utilizzare System.ServiceModel.Syndication.Syndicationfeed , ad esempio perché stai utilizzando un PCL (Portable Class Library). Ne ho scritto uno: FeedParserPCL . Puoi trovarlo su NuGet .