IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Probleme de parcours d'un fichier XML


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Par défaut Probleme de parcours d'un fichier XML
    Bonjour à tous,
    J'aimerais avoir un petit coup de pouce car je n'arrive pas à parcourir un fichier XML malgré toute les docs et les tutos.

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public void Lecture (string elevation){
     
     
                // Create a request using a URL that can receive a post. 
                WebRequest request = WebRequest.Create(elevation);
                // Set the Method property of the request to POST.
                request.Method = "POST";
                // Create POST data and convert it to a byte array.
                string postData = "This is a test that posts this string to a Web server.";
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                // Set the ContentType property of the WebRequest.
                request.ContentType = "application/x-www-form-urlencoded";
                // Set the ContentLength property of the WebRequest.
                request.ContentLength = byteArray.Length;
                // Get the request stream.
                Stream dataStream = request.GetRequestStream();
                // Write the data to the request stream.
                dataStream.Write(byteArray, 0, byteArray.Length);
                // Close the Stream object.
                dataStream.Close();
                // Get the response.
                WebResponse response = request.GetResponse();
                // Get the stream containing content returned by the server.
                dataStream = response.GetResponseStream();
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                responseFromServer = reader.ReadToEnd();
     
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(responseFromServer);           
                XPathNavigator navigatorXml= xmlDoc.CreateNavigator();
                XmlNamespaceManager nspXml = new XmlNamespaceManager(navigatorXml.NameTable);
                nspXml.AddNamespace("bk", "http://www.opengis.net/kml/2.2");
                XPathNodeIterator iterator = navigatorXml.Select("/bk:ElevationResponse/bk:Result",nspXml);
     
     
                while (iterator.MoveNext())
                {
                    if (iterator.Current.Name == "elevation")
                    {
                        coords[indice].Alt = iterator.Current.Value;
                        indice++;
                    }
                }
                // Clean up the streams.
                reader.Close();
                //dataStream.Close();
                response.Close();
           }


    Voici le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <ElevationResponse>
      <status>OK</status>
      <result>
        <location>
          <lat>45.4504618</lat>
          <lng>4.3970448</lng>
        </location>
        <elevation>492.3283081</elevation>
      </result>
      <result>
        <location>
          <lat>45.4505122</lat>
          <lng>4.3970687</lng>
        </location>
        <elevation>492.2723083</elevation>
      </result>
      <result>
        <location>
          <lat>45.4505272</lat>
          <lng>4.3972034</lng>
        </location>
        <elevation>492.0945435</elevation>
      </result>
      <result>
        <location>
          <lat>45.4504993</lat>
          <lng>4.3976111</lng>
        </location>
        <elevation>491.9577332</elevation>
      </result>
    </ElevationResponse>
    Mon but est de parcourir tous les nœuds <result> et dans ces nœuds, récupérer la valeur de <elevation>.
    Je met cette valeur dans une liste d'objet coords[indice].alt

    Suite à cela je créé un fichier XML.

    Mon problème est le suivant : Je ne rempli pas ma liste avec mes altitudes
    Et ceci même lorsque je retire { if (iterator.Current.Name == "elevation") }.

    Quelqu'un pourrait-il venir à mon secours.

    Merci d'avance.

    Cordialement

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    Essaye de travailler avec XElement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Xml.Linq.XElement
    peut être ça va t'aider sans écrire bcp de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     public void Lecture(string XmlPath)
            {
                // J'ai utilisé une liste de string ici au lieu de coords[], juste pour test
                List<string> lstElevation = new List<string>();
     
                // Charge l'element XElement à partir de ton fichier xml
                XElement element = XElement.Load(XmlPath);
     
                foreach (XElement f in element.Elements("result"))
                {
                    // Je récupère la valeur du noeud elevation
                    string elevation = (string)f.Element("elevation");
     
                    lstElevation.Add(elevation);
                }           
            }
    Bonne courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Par défaut
    Merci beaucoup, je vais testé cela de suite

    Sa marche !! Merci

    Il me reste plus qu'a gérer les threads

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcours d'un fichier XML
    Par Amiba dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/09/2007, 14h31
  2. [DOM] Besoin d'optimiser le parcours d'un fichier XML
    Par stardeus dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 08/04/2007, 17h04
  3. Probleme de lecture d'un fichier XML
    Par chleuh dans le forum Langage
    Réponses: 8
    Dernier message: 30/08/2005, 12h04
  4. [C#] Probleme d'écriture dans un fichier XML
    Par Joad dans le forum ASP.NET
    Réponses: 5
    Dernier message: 02/05/2005, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo