Débutons avec un exemple concret. Nous voudrions lire le flux RSS du site de la WP7Team et afficher le titre des news ainsi que le contenu dans notre application Windows Phone 7. Nous avons donc l’adresse de notre flux RSS : http://feeds.feedburner.com/jkmrs La première chose que nous allons faire c’est de préparer l’affichage des données dans le fichier MainPage.xaml . On crée donc une ListBox. Chaque item de cette ListBox aura un TextBlock pour le titre et un pour la description.
Ensuite, une fois que l’affichage est prêt, on va pouvoir s’attaquer à la récupération des données dans notre application. Pour se faire, on va créer un WebClient dans notre fichier MainPage.xaml.csqui va aller télécharger les informations pour que l’on puisse ensuite les traiter.
void MainPage_Loaded(object sender, RoutedEventArgs e) // Lorsque la page MainPage est complètement chargée { // On crée le WebClient WebClient wc = new WebClient(); // On télécharge notre flux RSS wc.DownloadStringAsync(new Uri("http://feeds.feedburner.com/jkmrs")); // Une fois le flux téléchargé, c'est cette méthode qui s'exécutera pour traiter les informations wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); }
Avant de traiter les informations que l’on a récupéré, nous allons créer une classe RSSitem.cs qui sera le modèle des éléments que l’on va récupérer. Ici nous voulons afficher le titre et la description des news, on va donc avoir dans notre classe 2 propriétés (Title et Description)
public class RSSitem { public string Title { get; set; } public string Description { get; set; } }
Maintenant que tout est prêt, nous pouvons traiter les informations dans la méthode wc_DownloadStringCompleted qui est exécutée lorsque le WebClient a téléchargé le flux. Dans cette méthode nous allons parcourir tout notre résultat et les insérer directement dans la ListBox que nous avons créé au départ.
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 RSSitem que l'on vient de créer. Description = x.Element("description").Value, // valeur de l'élément Title = x.Element("title").Value //valeur de l'élément }; }
Maintenant vous avez toute les clés en main pour créer de belles applications contenant des flux RSS. Dans cet exemple, nous affichons directement le résultat dans notre listbox. Vous pouvez naturellement mettre ça dans une liste pour pouvoir faire des traitements sur l’information et afficher le tout plus tard.
Il faut également ne pas oublier d’ajouter les référencesci-dessous à votre projet pour qu’il puisse compiler. Sinon, vous aurez des erreurs !
- System.Xml
- System.Xml.Linq
Et finalement, on vous mets les sources à télécharger. Un petit exemple vaut mieux qu’un long discours
Source de l’article : http://bit.ly/euNQhK
No Comments