Lire un flux RSS

Bonjour, Prenons un exemple. Je voudrais afficher Le titre et le contenu des news de mon blog. J’ai donc l’adresse de mon flux : http://devillu.com/blog/?feed=rss2Pour se faire, je vais créer une ListBox dans mon fichier xaml


Ensuite dans mon code, je crée un webclient qui va me permettre de télécharger le flux et d’exécuter des actions lorsque le téléchargement sera effectué. On a donc

void MainPage_Loaded(object sender, RoutedEventArgs e) { // On crée le WebClient WebClient wc = new WebClient(); // On télécharge notre flux RSS wc.DownloadStringAsync(new Uri("http://devillu.com/blog/?feed=rss2")); // Une fois le flux téléchargé, c'est cette méthode qui s'exécutera wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); }

Avant de regarder à la méthode de lecture, on va créer une classe (RSSitem.cs) qui va corespondre aux éléments RSS que l’on va récupérer pour les afficher dans notre listBox

 public class RSSitem { public string Title { get; set; } public string Description { get; set; } public string Link { get; set; } }

Ensuite, dans la méthode wc_DownloadStringCompleted on va lire notre flux et extraire les éléments que l’on veut.

 void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { // Si une erreur s'est produite pendant le téléchargement, on ne renvoit rien if (e.Error != null) return; // On va transformer le résultat en éléments XML XElement xmlItems = XElement.Parse(e.Result); //On va remplir notre listbox avec les différents Items parcourus dans le XML listBox1.ItemsSource = from x in xmlItems.Descendants("item") select new RSSitem //On crée un nouvel élément RSSitem { // Pour chaque élément RSS on va extraire les informations suivante que l'on va placer // dans l'élément que l'on vient de créer. Description = x.Element("description").Value, // valeur de l'élément  Link = x.Element("link").Value, //valeur de l'élément  Title = x.Element("title").Value //valeur de l'élément }; }

Voila, on a toute les informations pour lire n’importe quel flux RSS. Après il faut traiter les informations comme bon vous semble, mais l’essentiel est la. Il faut également ne pas oublier d’ajouter les références suivantes au projet :

  • System.Xml
  • System.Xml.Linq

Et voici les sources du projet en pièce jointe :

No Comments

Post a Comment