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 :

[AJAX] Extraire données XML d'un fichier


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut [AJAX] Extraire données XML d'un fichier
    Bonjour,

    Je développe en AJAX et le fichier XML que je crée et qui contient les résultats d'une requête ne contient pas exclusivement du XML. Il contient aussi du HTML...

    Je voulais savoir comment faire pour récupéré seulement les données XML de ce fichier et pas le HTML car ça crée un erreur au niveau de l'extraction des données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var docXML= xhr.responseXML;
    var items = docXML.getElementsByTagName("donnee");

  2. #2
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Qu'est-ce que ça donne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var docXML= xhr.responseXML.xml;
    var items = docXML.getElementsByTagName("donnee");

  3. #3
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Qu'est ce que tu appelles du html? juste le doctype ou autre chose?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Citation Envoyé par ryan Voir le message
    Yop!

    Qu'est-ce que ça donne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var docXML= xhr.responseXML.xml;
    var items = docXML.getElementsByTagName("donnee");
    Ca ne donne meme pas d'erreur, mais "items" est vide...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Qu'est ce que tu appelles du html? juste le doctype ou autre chose?
    Il y a plein d'autre chose car je travaille dans un CMS (Joomla) et il y a toutes les lignes de la mise en forme de la page (des "div",des "tab",...)

  5. #5
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Ca ne donne meme pas d'erreur, mais "items" est vide...
    Donc il faut utiliser autre chose que getElementsByTagName, par exemple selectNodes puis selectSingleNode

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Tu veux récupérer quoi exactement dans ta page?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Dans ma page je veux récupérer ceci (le contenu de mes balises) :

    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
     
    <tri>
    <choisi>
    <id>293</id>
    <nom>Essai</nom>
    <date>11/04/2007</date>
    <auteur>Bibi</auteur>
    </choisi>
    <choisi>
    <id>294</id>
    <nom>Essai 1</nom>
    <date>11/06/2008</date>
    <auteur>Bibi</auteur>
    </choisi>
    </tri>
    Je vais regarder les autres fonctions citées par ryan et je vous tiens au courant !

  8. #8
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Déja la première chose, est-ce que ce que tu renvoies un document xml bien formé?

    Si oui, le problème est juste de récupérer tes infos parmi les autres.
    Si non, le parsing xml échouera et tu ne pourras pas utiliser les méthodes classiques. Faudra alors faire autrement, ou modifier ton xml pour qu'il devienne bien formé.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    J'ai réussi à faire un fichier XML qui ne contient que que du XML

    Cependant je n'arrive toujours pas récupéré les données... bizare, avant ca marchait...

    Voici mon fichier 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
     <?xml version="1.0"?>
    <tri>
    <donnee>
    <id>91</id>
    <nom>Arbuste</nom>
    <date>08/01/2008</date>
    <auteur>Pierre Martin</auteur>
    <coche>Non</coche>
    </donnee>
    <choisi>
    <id>293</id>
    <nom>Essai</nom>
    <date>11/04/2007</date>
    <auteur>Bibi</auteur>
    </choisi>
    <choisi>
    <id>294</id>
    <nom>mlpo</nom>
    <date>11/06/2008</date>
    <auteur>Bibi</auteur>
    </choisi>
    </tri>
    Et le code pour récupérer les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var docXML= xhr.responseXML;
     
    var itemschoisi = docXML.getElementsByTagName("choisi");
     
    var htmlchoisi = "";
     
    for (i=0;i<itemschoisi.length;i++){
            htmlchoisi += "<br><tr><td colspan='3'><input type='checkbox' checked name='article[]' id='article";
        htmlchoisi += itemschoisi[i].getElementsByTagName("id")[0].firstChild.nodeValue+"'";
        htmlchoisi += " value='"+itemschoisi[i].getElementsByTagName("id")[0].firstChild.nodeValue+"'/>";
        htmlchoisi += "<b>"+itemschoisi[i].getElementsByTagName("nom")[0].firstChild.nodeValue+"</b> - ";
        htmlchoisi += itemschoisi[i].getElementsByTagName("auteur")[0].firstChild.nodeValue + " - ";
        htmlchoisi += itemschoisi[i].getElementsByTagName("date")[0].firstChild.nodeValue+"</tr>";
    }
    Seulement "itemschoisi" est vide et donc je ne récupère rien du tout...

  10. #10
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Est-ce que t'as bien mis le header sur ton serveur pour dire que le content-type que tu renvoies est du xml?

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Par défaut
    Salut,

    Est-ce que tu as essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var itemschoisi = docXML.documentElement.getElementsByTagName("choisi");
    Bonne chance ^^

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Oui car avec Firebug je peux voir les "response Headers" et dedans il y a une ligne :

    Donc je pense que ca c'est correct...

  13. #13
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Et si tu logues ton docXML, il te dit quoi?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Citation Envoyé par NikoGJ Voir le message
    Salut,

    Est-ce que tu as essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var itemschoisi = docXML.documentElement.getElementsByTagName("choisi");
    Bonne chance ^^
    Oui j'ai essayé, ca ne change rien...

    Merci quand meme !

    C'est bizare, quand je fais un "alert(itemchoisi)" il me di quand meme que c'est un "[object HTMLCollection]" et quand je fais "alert(itemschoisi.length)", il m'indique "0"... Autrement dit il crée bien l'objet, mais il est vide...

  15. #15
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Puisque tu utilises firebug, fais des console.log à la place des alert, ca va t'aider pour débugger ^^

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Et si tu logues ton docXML, il te dit quoi?
    Je ne sais pas faire..

    Quand je fais un console.log(docXML), j'ai des trucs bizare comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    firstChild   parsererror
    lastChild    parsererror

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    J'ai une erreur bizare...

    "Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe\nEmplacement : http://localhost/.....\nNuméro de ligne 2, Colonne 2 :"

    Je viens de remarquer que j'avais une ligne vide en début de mon fichier xml et sur la 2ème ligne il y a un espace avant le "<?xml version="1.0"?>" ...
    J'espère que ca vient pas juste de là... Car je sais pas pourquoi il y a cet espace !

  18. #18
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Au moins, maintenant on sait pourquoi t'obtiens rien, ton xml n'est pas formé à cause de la parse error ^^

    Tu generes ton xml avec une api ou juste a coup de concaténation de string?
    Si c'est le 2e cas, enleve <?xml version="1.0"?>, ca devrait aller mieux.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Bien jouéééé DoubleU !!

    J'ai enlevé la ligne "<?xml version="1.0"?>" et maintenant ca fonctionne

    Tu sais pourquoi ? car si c'est le cas j'aimerais bien savoir...

    Merci beaucoup en tout cas !

  20. #20
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Je crois qu'il faut un nombre de retour a la ligne particulier apres cette déclaration, et si tu l'écris a la main, tu tombes rarement sur le bon nombre ^^

Discussions similaires

  1. récuperation des données xml dans un fichier PDF
    Par medensao dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/06/2012, 17h33
  2. [XL-2003] Extraire données à partir d'un fichier fermé VBA
    Par Malco1503 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/10/2011, 15h31
  3. Réponses: 0
    Dernier message: 02/04/2009, 13h10
  4. Exporter des données xml dans un fichier XHTML
    Par StAfX dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 02/02/2009, 15h21
  5. extraires données xml d'un char*
    Par wadcyr8_197 dans le forum XML
    Réponses: 15
    Dernier message: 27/06/2007, 10h22

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