Meilleur auteur de réponses
flux RSS sous windows phone 7

Question
-
Bonjour,
Comment peut-on développer un flux RSS sous windows phone 7???
merci
KETATA Ramy
Tunisie
jeudi 17 mars 2011 09:26
Réponses
-
Bonjour,
Voila un petit exemple que tu pourras facilement reproduire :
Code Xaml :
<ListBox x:Name="lb"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <StackPanel Width="370" Margin="0,0,0,10"> <TextBlock Text="{Binding Title}" FontSize="28" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" /> <TextBlock Text="{Binding Description}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" /> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Code C# :
Voila j'espère que cela peut t'aider.public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender, RoutedEventArgs e) { // On crée le WebClient WebClient wc = new WebClient(); // Une s'abonne à l'évènement qui se déclenche une fois le téléchargement fini. wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); // On télécharge notre flux RSS wc.DownloadStringAsync(new Uri("http://social.msdn.microsoft.com/Forums/fr-FR/wmdevfr/threads?outputAs=rss")); } void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { 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 List<XElement> elements = xmlItems.Descendants("item").ToList(); List<RSSItem> flux = new List<RSSItem>(); foreach (XElement rssItem in elements) { RSSItem rss = new RSSItem(); rss.Description = rssItem.Element("description").Value; rss.Link = rssItem.Element("link").Value; rss.Title = rssItem.Element("title").Value; flux.Add(rss); } lb.ItemsSource = flux; } } public class RSSItem { public String Description { get; set; } public String Link { get; set; } public String Title { get; set; } }
- Marqué comme réponse Alex Petrescu mardi 22 mars 2011 12:09
jeudi 17 mars 2011 19:52
Toutes les réponses
-
Bonjour,
Voila un petit exemple que tu pourras facilement reproduire :
Code Xaml :
<ListBox x:Name="lb"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <StackPanel Width="370" Margin="0,0,0,10"> <TextBlock Text="{Binding Title}" FontSize="28" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" /> <TextBlock Text="{Binding Description}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" /> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Code C# :
Voila j'espère que cela peut t'aider.public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender, RoutedEventArgs e) { // On crée le WebClient WebClient wc = new WebClient(); // Une s'abonne à l'évènement qui se déclenche une fois le téléchargement fini. wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); // On télécharge notre flux RSS wc.DownloadStringAsync(new Uri("http://social.msdn.microsoft.com/Forums/fr-FR/wmdevfr/threads?outputAs=rss")); } void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { 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 List<XElement> elements = xmlItems.Descendants("item").ToList(); List<RSSItem> flux = new List<RSSItem>(); foreach (XElement rssItem in elements) { RSSItem rss = new RSSItem(); rss.Description = rssItem.Element("description").Value; rss.Link = rssItem.Element("link").Value; rss.Title = rssItem.Element("title").Value; flux.Add(rss); } lb.ItemsSource = flux; } } public class RSSItem { public String Description { get; set; } public String Link { get; set; } public String Title { get; set; } }
- Marqué comme réponse Alex Petrescu mardi 22 mars 2011 12:09
jeudi 17 mars 2011 19:52 -
Merci
:)
KETATA Ramy
Tunisie
vendredi 18 mars 2011 08:16 -
Bonjour,
lors de l'exécution, j'ai eu un problème:
"NotSupportedException n'a pas été géré" au niveau de la ligne suivante
"XElement xmlItems = XElement.Parse(e.Result);"
Merci
KETATA Ramy
Tunisie
vendredi 18 mars 2011 09:37 -
Bonjour,
Avez-vous vérifié la valeur de e.Result ?
Cordialement,
Alex
________________
Astuces pour Visual Studio 2010
XNA – Développement jeux vidéo
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
vendredi 18 mars 2011 12:43 -
Vous avez testé avec la même URL de flux rss ou vous avez mis une autre adresse ?
vendredi 18 mars 2011 20:04 -
Bonjour hazolhim,
quand j'ai testé avec "http://social.msdn.microsoft.com/Forums/fr-FR/wmdevfr/threads?outputAs=rss"
ça fonctionne :)
mais quand j'ai voulu afficher les actualités de blog du site IsaFirewalls, j'ai changé le URL à http://isafirewalls.org/blogs/default.aspx , il m'a apparu l'erreur suivante:
"NotSupportedException n'a pas été géré" au niveau de la ligne suivante
"XElement xmlItems = XElement.Parse(e.Result);"
Merci
KETATA Ramy
Tunisie
mardi 22 mars 2011 10:02 -
aaaah c bon ça fonctionne
il faut ajouter au URl "http://......./threads?outputAs=rss"
Merci
KETATA Ramy
Tunisie
mardi 22 mars 2011 15:43 -
Bonjour,
Je développe une application sur windows phone et je souhaite afficher les news apartir d'un flux rss et j'ai du mal a affiche une image dans la listbox ?
Merci.
vendredi 27 mai 2011 09:58 -
Bonjour,
Il serait mieux de créer un nouveau post, car celui la à été résolu.
Sinon voici un petit exemple pour afficher une image :
<ListBox x:Name="listbox1"> <ListBox.ItemTemplate> <DataTemplate> <Image Source="{Binding MonImage}" Width="96" HorizontalAlignment="Left" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
vendredi 27 mai 2011 14:35 -
Bonjour,
merci de m'avoir répondu mon besoin , je doit lire un flux rss et afficher le titre , la description et l'image (enclosure) et donc j'ai suivi votre tuto et j'ai réussie a afficher le titre et la description, et donc j'ai suivi la mm méthode pour l'image mais sa ne marche pas.
Cordialement .
lundi 30 mai 2011 13:17 -
Pourriez vous faire voire votre code pour le renseignement de l'image ?
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
lundi 30 mai 2011 16:41 -
mon code xaml :
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ListBox ItemsSource="{Binding Items}" Height="646" Margin="0,6,0,0" x:Name="listBox1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="450">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button HorizontalAlignment="Left">
<Button.Content>
<Image Source="" DataContext="{Binding}" Width="150" Height="150" Margin="0,0,0,0" />
</Button.Content>
</Button>
<StackPanel Width="370" Margin="0,10,0,10" Orientation="Vertical">
<TextBlock Text="{Binding Date}" FontSize="14" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" DataContext="{Binding}"/>
<TextBlock Text="{Binding Title}" FontSize="14" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" DataContext="{Binding}" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Grid>code c# :
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
DisplayPopup();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
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://www.aufaitmaroc.com/feeds/tous.xml"));
// Une fois le flux téléchargé, c'est cette méthode qui s'exécutera
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
}
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.
Date = x.Element("pubDate").Value,
Link = x.Element("link").Value,//valeur de l'élément <link>
Title= x.Element("title").Value, //valeur de l'élément <title>
};
}Class Rssitem :
public class RSSitem
{
public string Title { get; set; }
public string Date { get; set; }
public string Link { get; set; }
}je veux récupérer le titre , la date et l'image
j'ai pu le faire pour le titre et la date mais pour l'image je n'arrive pas
je doit récupérer la balise <enclosure.....>
mardi 31 mai 2011 10:09 -
Voila le code modifier et cela fonctionne :
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <ListBox ItemsSource="{Binding Items}" Height="646" Margin="0,6,0,0" x:Name="listBox1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="450"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Button HorizontalAlignment="Left"> <Button.Content> <Image Source="{Binding Image}" Width="150" Height="150" Margin="0,0,0,0" /> </Button.Content> </Button> <StackPanel Width="370" Margin="0,10,0,10" Orientation="Vertical"> <TextBlock Text="{Binding Date}" FontSize="14" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" DataContext="{Binding}"/> <TextBlock Text="{Binding Title}" FontSize="14" TextWrapping="Wrap" Style="{StaticResource PhoneTextAccentStyle}" DataContext="{Binding}" /> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid>
public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); //DisplayPopup(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } 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://www.aufaitmaroc.com/feeds/tous.xml")); // Une fois le flux téléchargé, c'est cette méthode qui s'exécutera wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); } 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. Date = x.Element("pubDate").Value, Link = x.Element("link").Value,//valeur de l'élément <link> Title = x.Element("title").Value, //valeur de l'élément <title> Image = x.Element("enclosure").LastAttribute.Value }; } } public class RSSitem { public string Title { get; set; } public string Date { get; set; } public string Link { get; set; } public string Image { get; set; } }
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
- Proposé comme réponse Pascal Saille mardi 31 mai 2011 13:03
mardi 31 mai 2011 13:03 -
Merci Pascal pour ta réponse , mais malheureusement sa n'affiche rien , sa ne récupère pas l'image .
pour m'assurer je veux savoir si tu l'as teste chez toi ?
mardi 31 mai 2011 14:56 -
Chez moi cela marche très bien. as tu bien modifier le xaml comme ceci :
<Image Source="{Binding Image}" Width="150" Height="150" Margin="0,0,0,0" />
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
mardi 31 mai 2011 16:02 -
Bonjour,
oui je l'ai bien modifier mais je vois pas pourquoi sa ne marche pas chez moi , mais j'ai trouve une autre solution :
public class RSSitem
{
public string Title { get; set;}
public string Date { get; set;}
public string Link { get; set;}
public Uri Image { get; set; }}
au moment de l'appel je procède comme suit :
Image=new Uri(x.Element("enclosure").Attribute("url").Value)
et finalement le binding :
<Image Source="{Binding Image}" DataContext="{Binding}" Width="150" Height="150" Margin="0,0,0,0" />
mercredi 1 juin 2011 09:13 -
En tous cas que cela soit ma solution ou ta solution, sur mon poste cela marche sans problème.
Mais en tous cas le DataContext={Binding} sert à rien, car par défaut les items de ta ListBox ont comme DataContext un objet de type RSSitem, ainsi que tous les enfants visuels contenu dans chaque ListBoxItem.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
mercredi 1 juin 2011 10:17 -
oui je voi , juste une autre questions je voudrais afficher le détails de l'info sur une autre page en cliquant sur l'image et donc je veux afficher que la balise description de chaque image sélectionné , si tu as une idée?mercredi 1 juin 2011 11:33
-
Bonjour,
Il te suffit juste de passer en paramètre à l'adresse Uri les informations que tu as besoin.
C'est dommage, je voulais mettre un tutorial sur la navigation sur winphone7 sur msdn mais cela ne passe pas j'ai une erreur.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
lundi 6 juin 2011 18:39 -
Bonjour,
j'ai arrivée a afficher la description mais j'ai du mal a afficher l'image voici mon code :
protected override void OnNavigatedTo(NavigationEventArgs e)
{
RSSitem currentArticle = (RSSitem)PhoneApplicationService.Current.State["RSSitem"];
desciption.Text = currentArticle.Desciption;image ?
base.OnNavigatedTo(e);
}je veux savoir pour le cas de l'image comment faire ?
NB: j'ai suivi ce tutorial --->http://nico-pyright.developpez.com/tutoriel/vs2010/csharp/windows-phone-seven/navigation-silverlight-wp7/mardi 7 juin 2011 15:56 -
L'idéal est de faire dans la méthode OnNavigatedTo :
this.DataContext = currentArticle;
Et ensuite dans le fichier xaml :
<Image Source="{Binding Image}" Width="150" Height="150" Margin="0,0,0,0" />
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
- Proposé comme réponse Pascal Saille mercredi 8 juin 2011 18:32
mardi 7 juin 2011 19:17 -
Merci beaucoup sa marche très bien :) .mercredi 8 juin 2011 08:41
-
Bonjour,
Merci de créer un nouveau post. car ce post va jamais en finir alors qu'à l'origine il à été créée par Ketata Ramy pour une question précise. Et ce post à eu une réponse.
Et la on part sur des question différentes à chaque fois.
Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
vendredi 10 juin 2011 18:56 -
Hi, I found this the most helpful internet page while trying to create an RSS page. If possible please could you advise how to open an RSS item using this script? I would be very grateful, and reference you in my about page (once I complete my project) etc.
- Sorry I posted this in English ;-)
Best regards,
- Modifié Lynx101 mardi 17 juillet 2012 20:58
mardi 17 juillet 2012 20:57