Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WP7][C#] Faire une requête xml et parser le résultat

Sujet résolu
    28 mars 2011 à 0:01:09

    Bonsoir à tous !

    Je développe actuellement une petite application pour WP7, et je souhaite faire une requête XML et la parser. j'ai actuellement fait ma page PHP qui quand elle est appelée renvoie un contenu de type xml.

    Le problème est que je n'arrive pas à faire ma requête en C#. J'ai tenté avec un objet HttpWebRequest, mais je n'arrive pas à m'en sortir. Je suis allé voir la doc, mais je n'ai pas tout compris...

    Si quelqu'un pouvez m'écrire un exemple simple et minimal pour faire ma requête et la parser, je lui en serai reconnaissant !

    Merci d'avance pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2011 à 1:03:50

      Exemple:

      HttpWebRequest rqst = HttpWebRequest.CreateHttp("http://ton/url.php");
      rqst.AllowReadStreamBuffering = true;
      rqst.BeginGetResponse(result =>
      {
      	WebResponse response = rqst.EndGetResponse(result);
      	XDocument doc = XDocument.Load(response.GetResponseStream());
      	response.Close();
      	Deployment.Current.Dispatcher.BeginInvoke(() =>
      	{
      		// utiliser doc ici
      	});
      }, null);
      
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2011 à 2:18:00

        Tout d'abord merci pour ton aide, ton morceau de code m'a été d'une grande aide !

        J'ai cependant une question.

        Voici mon fichier xml :

        <main>
          <evt>
            <titre>TEST 2</titre>
            <img>img/evt/photo/8.jpg</img>
            <date>2011-03-31</date>
          </evt>
          <evt>
            <titre>TEST 1</titre>
            <img>img/evt/photo/6.jpg</img>
            <date>2014-02-05</date>
          </evt>
        </main>
        


        Voici maintenant le morceau de code que j'exécute :

        HttpWebRequest rqst = HttpWebRequest.CreateHttp("htt://www.adresse.fr");
        
        rqst.AllowReadStreamBuffering = true;
        rqst.BeginGetResponse(result =>
        {
          WebResponse response = rqst.EndGetResponse(result);
          XDocument doc = XDocument.Load(response.GetResponseStream());
          response.Close();
        
          Deployment.Current.Dispatcher.BeginInvoke(() =>
          {
            var titre = from x in doc.Descendants("evt") select x;
                            
            foreach (var elem in titre) {
              MessageBox.Show(elem.Element("titre").ToString() + " " + elem.Element("img").ToString(), "Test", MessageBoxButton.OK);
            }                    
           });
        }, null);
        


        Voici alors l'affichage que j'obtiens :

        <titre>TEST 2</titre><img>img/evt/photo/8.jpg</img>
        <titre>TEST 1</titre><img>img/evt/photo/6.jpg</img>


        Comment alors se débarrasser des balises qui entourent mes informations ?

        D'autant plus étrange que si je fais par exemple la requête suivante :

        var titre = from x in doc.Descendants("evt") select x.Element("titre");
                            
        foreach (String elem in titre) {
          MessageBox.Show(elem, "A Propos", MessageBoxButton.OK);
        }
        


        j'obtiens bien les titres, et je n'ai pas les balises, juste les informations.

        Merci d'avance pour votre aide !
        • Partager sur Facebook
        • Partager sur Twitter
          29 mars 2011 à 11:26:45

          Appeler ToString() sur un XElement ou un XNode a pour effet d'afficher cet élément/ce noeud lui-même, pas son contenu. Donc il est normal que les balises soient affichées. Si tu veux n'afficher que le contenu d'un élément, utilise sa propriété Value:

          foreach (var evt in doc.Descendants("evt")) {
                MessageBox.Show(evt.Element("titre").Value + " " + evt.Element("img").Value , "Test", MessageBoxButton.OK);
              }
          
          • Partager sur Facebook
          • Partager sur Twitter

          [WP7][C#] Faire une requête xml et parser le résultat

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown