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 :

Parser XML


Sujet :

JavaScript

  1. #21
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Ah oui... c'est vrai, AJAX ^^

    utilise responseText plutôt que responseXML

    et le résultat n'est pas dans une variable globale, c'est le retour de la fonction

  2. #22
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bien alors j'ai essayer ceci:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
    <html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>">
    <head>
    <title>Liste des commandes</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <script language="JavaScript">
    function getXhr(){
        if(window.XMLHttpRequest) // Firefox et autres
           xhr = new XMLHttpRequest();
        else if(window.ActiveXObject){ // Internet Explorer
           try {
                       xhr = new ActiveXObject("Msxml2.XMLHTTP");
                   } catch (e) {
                       xhr = new ActiveXObject("Microsoft.XMLHTTP");
                   }
        }
        else { // XMLHttpRequest non supporté par le navigateur
           alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
           xhr = false;
        }
       }
    function xmltxt(){
        getXhr();
        xhr.onreadystatechange = function(){
         if(xhr.readyState == 4 && xhr.status == 200){
          XML = xhr.responseText.substring(xhr.responseText.lastIndexOf('?>') + 2)
          alert(XML);
          var autor = "Voltaire";
          var DOM_XML = document.createElement('div');
          DOM_XML.innerHTML = XML;
          var autors = DOM_XML.getElementsByTagName('livres');
          var results = new Array();
          for(var i = 0; i < autors.length; ++i)
           if(autors[i].getAttribute('auteur') == autor)
           {
            var livres = autors[i].getElementsByTagName('livre');
            for(var j = 0; j < livres.length; ++j)
            result.push(livres[i].innerHTML);
           }
          alert(result);
         }
        }
        xhr.open("GET", "livre.xml", true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send(null);
       }
    </script>
    </head>
    <body onLoad="xmltxt();">
    </body>
    </html>
    Mais ceci:
    ne marche pas. Ca me dit que result est indefini.

  3. #23
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    c'est parce que tu déclares results

  4. #24
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ok j'ai corrigé plus d'erreur mais rien dans result! Vide, comment ca se fait?
    Et puis j'ai une erreur sur la fonction donnée:
    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
    function getLivre(var XML, var autor)
    {
       var DOM_XML = document.createElement('div');
       DOM_XML.innerHTML = XML;
       var autors = DOM_XML.getElementsByTagName('livres');
       var result = new Array();
       for(var i = 0; i < autors.length; ++i)
          if(autors[i].getAttribute('auteur') == autor)
          {
               var livres = autors[i].getElementsByTagName('livre');
               for(var j = 0; j < livres.length; ++j)
                   result.push(livres[i].innerHTML);
          }
       return result;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getLivre(XML,'Voltaire');
    Erreur : missing formal parameter
    Fichier source : http://127.0.0.1/ajax/go1.html
    Ligne : 39, Colonne : 18
    Code source :
    function getLivre(var XML, var autor)

    Et ligne 39 c'est ca: function getLivre(var XML, var autor)

  5. #25
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Chez moi ça marche (sauf qu'il me met deux fois Candide)
    il faut juste modifier ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                   result.push(livres[i].innerHTML);
    en ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                   result.push(livres[j].innerHTML);
    et les deux titres sont différents...

    ci-joint le document où ça marche (sauf que je n'utilse AJAX... mais comme tu le verras, ça revient au même )

  6. #26
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben cher moi ca me met bien le contenu du xml, mais apres rien , le deuxieme alert est vide :'(, j'utilis IE car je vien de voir que sous Firefox ca marchait mais alors pourquoi pas sous IE?

  7. #27
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    laisse moi deviner... tu es sous Internet Explorer ?

    Il bug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DOM_XML.innerHTML = XML;
    alert(XML);
    alert(DOM_XML.innerHTML);
    tu devrais vite comprendre ^^

  8. #28
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben comment faire alors?

  9. #29
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ya une solution? On peut y faire quelque chose ou c'est encore une deception du XML avant que j'aille au lit?

  10. #30
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    IE plante, on n'y peut absoluement rien à part attendre la prochaine version (peut-être) désolé...

  11. #31
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    C'est bon j'ai reussi . En utilisant la reponseXML ca marche super!!
    Mais je revient a ma premiere question, en faite on ne peut pas vraiment faire un pareser "universel", il faut connaitre la structure du XML avant non?

  12. #32
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par cerede2000
    C'est bon j'ai reussi . En utilisant la reponseXML ca marche super!!
    Mais je revient a ma premiere question, en faite on ne peut pas vraiment faire un pareser "universel", il faut connaitre la structure du XML avant non?
    Il faut tout de meme au moins connaitre la profondeur du noeud contenant l'information qui t'interesse. Et ceci peut effectivement changer d'un fichier xml a un autre.
    De plus dans le code que tu utilise tu cherche directement par nom de balise, donc effectivement il te faut connaitre la structure du fichier XML.

  13. #33
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Amusant tout ça

    Bon, après tout je n'utilise ce type de traitement que tous les jours mais si mon avis interesse:

    Pour retrouver un element dans un xml je n'utilise jamais tout ce fourbi, il me suffit de connaitre xpath (ce qui permet parfois aussi de ne pas avoir besoin de connaitre la structure exacte du xml).
    Pour IE instruction selectnodes (attention il y a un setproperty a initialisé a la bonne valeur)
    Pour mozilla/firefox fonction document.evaluate

    Pour rentrer une "chaine string" dans un document xml
    IE propriété loadxml
    Mozilla/firefox creer un "new DOMparser()" (ou un truc du style, je l'utilise moins pas ma doc sous les yeux)

    etc...

  14. #34
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Hum tu pourrai me mettre ton code ou me l'envoyer par MP s'il te plait?
    Merci .

  15. #35
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    J'attent une reponse de Erwy et je mettrai resolu apres!

  16. #36
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927

  17. #37
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Ce post est très intéressant, vraiment.
    J'avoue avoir apris des choses qui me sont très utiles !
    Je pense même que ca mériterait de se retrouver dans la FAQ...

  18. #38
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Erwy ton systeme est interessant mais seulement il oblige a faire des tests pour differencier le navigateur! Et ne plus qu'en est il des autres style opera ou autre?
    Moi mon systeme est simple marche partout et vu que je connais ma structure XML c'est niquel.
    Merci quand meme

  19. #39
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par cerede2000
    Erwy ton systeme est interessant mais seulement il oblige a faire des tests pour differencier le navigateur! Et ne plus qu'en est il des autres style opera ou autre?

    Citation Envoyé par cerede2000

    <script language="JavaScript">
    function getXhr(){
    if(window.XMLHttpRequest) // Firefox et autres
    xhr = new XMLHttpRequest();
    else if(window.ActiveXObject){ // Internet Explorer
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    xhr = false;
    }
    }

  20. #40
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Oui mais la c'est un petit bout de code tres tres minime! Et si on ne le met pas ca ne fonctionne pas!
    Alors que la mon code marche pour tous sans probleme !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [XML] Parser XML
    Par RobinJulie dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/02/2005, 08h48
  2. Parser XML -> PDF
    Par ebaynaud dans le forum Modules
    Réponses: 2
    Dernier message: 12/10/2004, 14h07
  3. [SAX] NoSuchElementException sur parser XML
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/05/2004, 14h42
  4. parser xml
    Par billout dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/11/2003, 11h08
  5. Parser XML
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 03h17

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