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

JavaScript Discussion :

Accéder noeud XML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 13
    Points
    13
    Par défaut Accéder noeud XML
    Je reçois des données XML d'un serveur... mais je ne connais pas à l'avance son contenu.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <variables>
      <variable>
        <name>name_of_variable</name>
        <type>type_of_variable</type>
        <value>type_of_variable</value>
      </variable>
      <variable>
         ...
      </variable>
      ...
    </variables>
    Voici comment je procède :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //je vérifie si le noeud 'variables' existent
    if (xmldoc.getElementsByTagName('variables').length > 0) {
     
      //je stocke le nombre de noeuds 'variable'
      var variable_nodes = xmldoc.getElementsByTagName('variable');
     
      for (i = 0; i < variable_nodes.length; i++) {
        var name_node = variable_nodes[i].getElementsByTagName("name");
         ...
      }
    }
    Et ca marche... maintenant cela m'arrangerait que les données reçus soit modifiées avec cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <variable>
        <name>name_of_variable</name>
        <type>type_of_variable</type>
        <value>type_of_variable</value>
    </variable>
    <variable>
         ...
    </variable>
      ...
    Donc ne plus avoir le noeud 'variables'

    J'ai repris le même code qu'avant: je regarde si un noeud variable existe. Si oui je compte combien il y en a. Ensuite je boucle dessus... ca marche s'il y a seulement un noeud 'variable'... mais pas plus, ce qui me fait penser donc qu'il ne trouve pas le nombre de noeud...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //je vérifie si le noeud 'variable' existent
    if (xmldoc.getElementsByTagName('variable').length > 0) {
    
      //je stocke le nombre de noeuds 'variable'
      var variable_nodes = xmldoc.getElementsByTagName('variable');
    			
      for (i = 0; i < variable_nodes.length; i++) {
        var name_node = variable_nodes[i].getElementsByTagName("name");
         ...
      }
    }
    Comment faire ? Est-ce je suis obligé d'englober les noeuds variable dans un noeud variables ? Plus précisément, pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var variable_nodes = xmldoc.getElementsByTagName('variable');
    dans le premier cas me retourne la collection de noeud variable... mais pas dans le deuxième cas ? Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, si tu supprimes la balise <variables>, ton document XML n'est plus correct puisqu'il ne contient plus de noeud racine.

    Tu peux jeter un oeil ici : http://zvon.developpez.com/tutoriels/xml/

    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Merci pour la réponse.

    C'est bien ce que je pensais... mais dans ce cas, je pourrais mettre un noeud <root> au début et </root> à la fin et peu importe le contenu (j'ai encore d'autres noeuds que juste <variable>) pour donner qqch du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <root>
      <variable>....</variable>
      <variable>....</variable>
      ...
    </root>
    Mais cela ne marche pas non plus... c louche

    Edit : après activation du cerveau, ça marche! Merci bien!

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

Discussions similaires

  1. [Débutant] Accéder noeud XML spécifique
    Par bob633 dans le forum C#
    Réponses: 4
    Dernier message: 22/12/2011, 16h13
  2. Accéder à un noeud XML spécifique
    Par zooffy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 25/10/2010, 13h26
  3. [Ajout noeud xml] comment ça marche?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 37
    Dernier message: 19/07/2007, 22h46
  4. Accéder à un noeud XML
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/06/2007, 12h56
  5. XSL ne parvient pas à lire les noeuds XML ??
    Par yahn dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/06/2004, 19h29

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