Obtenir des informations d'un XML

Résolu
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012 - 25 juil. 2011 à 11:08
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012 - 29 juil. 2011 à 21:16
Bonjour à tous,

Je souhaite obtenir des informations d'une adresse XML.
<weatherdata><weather weatherlocationcode="wc:FRXX0016" weatherlocationname="Bordeaux, Gironde" zipcode="33300" encodedlocationname="Bordeaux%2c+Gironde" url="http://meteo.msn.com/local.aspx?wealocations=wc:FRXX0016&q=Bordeaux%2c+Gironde" imagerelativeurl="http://blst.msn.com/as/wea3/i/fr/" degreetype="C" provider="Foreca" attribution="Données fournies par Foreca" attribution2="© Foreca" lat="44.8557549" long="-0.5782283" timezone="2" alert="" entityid="4486"><current temperature="18" skycode="39" skytext="Averses" date="2011-07-25" day="lundi" shortday="lun." observationtime="10:00:00" observationpoint="Bordeaux / Merignac" feelslike="18" humidity="100" windspeed="15" winddisplay="15 km/h O"/><forecast low="17" high="20" skycodeday="9" skytextday="Averses" date="2011-07-25" day="lundi" shortday="lun." precip="95"/><forecast low="15" high="20" skycodeday="11" skytextday="Averses" date="2011-07-26" day="mardi" shortday="mar." precip="95"/><forecast low="13" high="24" skycodeday="39" skytextday="Averses / Temps clair" date="2011-07-27" day="mercredi" shortday="mer." precip="65"/><forecast low="14" high="23" skycodeday="30" skytextday="En partie nuageux" date="2011-07-28" day="jeudi" shortday="jeu." precip="10"/><forecast low="16" high="24" skycodeday="30" skytextday="En partie nuageux" date="2011-07-29" day="vendredi" shortday="ven." precip="15"/><toolbar timewindow="60" minversion="1.0.1965.0"/></weather></weatherdata>


J'arrive à obtenir la première partie des informations (CURRENT) mais en ce qui concerne le FORECAST, j'obtiens que le dernier jour de prévisions.
En effet <Forecast> se répète 5 fois exactement, et je n'arrive pas à les obtenir individuellement.

J'aimerai obtenir une méthode pour que des labels, puissent afficher les informations FORECAST pour chaque jour.

Est-ce possible?

Merci d'avance pour votre aide
Jules

8 réponses

julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012
25 juil. 2011 à 11:10
Voici l'adresse XML, puisque l'affichage du code à bugger dans le premier poste.

http://weather.service.msn.com/data.aspx?s&weadegreetype=C&culture=fr-fr&wealocations=wc:FRXX0016

Jules
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
25 juil. 2011 à 21:31
Bonjour,

Quel est ton code de récupération et de traitement ?
(Coloration syntaxique 3ième icône en partant de la droite )

Mon site
0
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012
26 juil. 2011 à 08:39
Voici un fragment:
fenetre1.Conditions_actuelles_f1.Text affiche que le dernier jour du forecast

  Try
            While reader.Read()
                If (reader.NodeType XmlNodeType.Element) AndAlso (reader.Name "forecast") Then
reader.MoveToAttribute("skytext")
                    fenetre1.Conditions_actuelles_f1.Text = reader.Value
  End If
            End While
            Return currentWeatherReport
        Catch ex As Exception
            Throw ex
        End Try


Jules
0
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012
26 juil. 2011 à 08:42
j'ai trouvé un site qui expliquerai comment faire, mais c'est du C-sharp.
Je peux le traduire mais je n'arrive pas à mettre en place les "collections" qu'ils demande et comment un label pourrait afficher les infos que je souhaite.

Voici le lien: http://www.codeguru.com/forum/showthread.php?t=483459


Jules
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 juil. 2011 à 18:55
Bonsoir,

Je sais qu'il faut pas pondre un code tout fait mais bon.
Voici comment tu peux récupérer ces infos :
Dim XmlDoc As New XmlDocument
XmlDoc.Load("http://weather.service.msn.com/data.aspx?s&weadegreetype=C&culture=fr-fr&wealocations=wc:FRXX0016 ")
Dim elements As XmlNodeList = XmlDoc.DocumentElement.GetElementsByTagName("forecast")
For Each item As XmlElement In elements
Dim dt As String = item.GetAttribute("date")
Dim pr As String = item.GetAttribute("precip")
Debug.Print(dt & "  " & pr)
Next

Bonne soirée.
0
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012
27 juil. 2011 à 05:49
Ton code est parfait banana.
Avec une MsgBox, j'arrive parfaitement à voir tout les jours téléchargés et c'est exactement ce qu'il fallait.

Cependant, pour que chaque label affiche une information différente, j'utilise cette méthode. N'y a t-il pas plus rapide et surtout moins lourd?

                    If f1 = 0 Then
                            fenetre1.jour_f1.Text = ""
                            fenetre1.jour_f1.Text = day
                            fenetre1.texte_f1.Text = sk
                            fenetre1.temp_f1.Text = temp1 + " / " + temp2
                            fenetre1.precip_f1.Text = pr
                            f1 = 1
                        Else
                            If f2 = 0 Then
                                fenetre1.jour_f2.Text = ""
                                fenetre1.jour_f2.Text = day
                                fenetre1.texte_f2.Text = sk
                                fenetre1.temp_f2.Text = temp1 + " / " + temp2
                                fenetre1.precip_f2.Text = pr
                                f2 = 1
                            Else
                                If f3 = 0 Then
                                    fenetre1.jour_f3.Text = ""
                                    fenetre1.jour_f3.Text = day
                                    fenetre1.texte_f3.Text = sk
                                    fenetre1.temp_f3.Text = temp1 + " / " + temp2
                                    fenetre1.precip_f3.Text = pr
                                    f3 = 1
                                Else
                                    If f4 = 0 Then
                                        fenetre1.jour_f4.Text = ""
                                        fenetre1.jour_f4.Text = day
                                        fenetre1.texte_f4.Text = sk
                                        fenetre1.temp_f4.Text = temp1 + " / " + temp2
                                        fenetre1.precip_f4.Text = pr
                                        f4 = 1
                                    Else
                                        If f5 = 0 Then
                                            fenetre1.jour_f5.Text = ""
                                            fenetre1.jour_f5.Text = day
                                            fenetre1.texte_f5.Text = sk
                                            fenetre1.temp_f5.Text = temp1 + " / " + temp2
                                            fenetre1.precip_f5.Text = pr
                                            f5 = 1
                                        End If
                                    End If
                                End If
                            End If
                        End If


Merci à tous encore pour votre aide

Jules
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
27 juil. 2011 à 09:05
Bonjour,

A la place des tes If en cascade (Tu pourrais aussi utiliser ElseIf à la place de Else If, ça te limiterais à 1 seul niveau de If

Tu pourrais aussi utiliser plusieurs tableau (ou un tableau de structure) :
Dim ltJour as TextBox()=new TextBox(){fenetre1.jour_f1,fenetre1.jour_f2,fenetre1.jour_f3,fenetre1.jour_f4,fenetre1.jour_f5}

'Puis
Dim i As Integer=0

'et
ltJour(i).Text=day
i+=1


ce sera plus simple et plus propre.

Mon site
0
julien2424 Messages postés 76 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 24 avril 2012
29 juil. 2011 à 21:16
Exactement les conseils que je cherché...

Merci encore à NHenry ;)

Jules
0
Rejoignez-nous