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

NodeJS Discussion :

Récupérer des données XML


Sujet :

NodeJS

  1. #1
    Membre à l'essai
    Récupérer des données XML
    Bonjour,

    J'aimerais récupérer les vacances scolaires sur une période. J'ai trouvé ce lien : http://telechargement.index-educatio...m/vacances.xml qui me permet de récupérer plein d'info le problème est que c'est sous format XML.

    J'ai fait ceci pour récupérer :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Création d'une requête HTTP
        var xhr = new XMLHttpRequest();
        // Requête HTTP GET synchrone vers le fichier langages.txt publié localement
        xhr.open("GET", "http://telechargement.index-education.com/vacances.xml", false);
        // Envoi de la requête
        xhr.send();
        let xml = xhr.responseXML;



    Mais après je ne sais pas comment lire les données. Si quelqu'un pouvait m'aider, s'il vous plaît.
    Je suis en JS côté serveur avec Node.JS. Après si une personne connaît une API qui me permet de récupérer les vacances scolaire (ou autre méthode) en JSON/JS, je prends ça sera plus simple^^.

    Merci d'avance.

    Cordialement

  2. #2
    Expert éminent sénior
    Si tu es côté serveur sur Node ce n'est pas XMLHttpRequest qu'il te faut utiliser. Ça c'est une API côté browser.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Membre à l'essai
    Bonjour,

    merci de l'information, je ne savais pas mais dans ce cas, je fais comment en back pour aller chercher des infos dans une API?

  4. #4
    Membre émérite
    D'abord je ne pense pas que le site qui fournit le document xml soit capable dans ce cas précis d'envoyer un bon mimetype que eventuellement le client puisse directement utiliser responseXML. En tout cas, on peut toujours capturer la réponse comme une chaîne de caractères.
    //let xml = xhr.responseXML;
    let xml = xhr.responseText;
    A partir de la variable xml, on peut faire toute sorte de travail comme on désire.

    La methode de le faire qui remplit la plupart de buts est de charger le module xmldom; et si on veut faire des recherches des info dedans plus compliquées, on charge le module xpath egalement.

    Comme demo, le code va progresser comme ça.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var DOMParser=require('xmldom').DOMParser;
    var doc=new DOMParser().parseFromString(xml);
    //pour une démonstration
    var x=doc.documentElement.getElementsByTagName('departement')[0].getAttribute('numero');
    console.log(x);
     
    //pour les buts plus subtils à faire, on peut faire appeler au module xpath également
    var xpath=require('xpath');
    var z=xpath.select('//academie[@libelle="Grenoble"]/@zone', doc, true).value;
    console.log(z);

    Voilà en gros bien suffisant pour faire beaucoup des tâches.

  5. #5
    Expert éminent sénior
    Citation Envoyé par leonora Voir le message
    Bonjour,

    merci de l'information, je ne savais pas mais dans ce cas, je fais comment en back pour aller chercher des infos dans une API?
    Je te conseille d'utiliser un package qui va abstraire la complexité des briques de base de node comme par exemple Axios.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  6. #6
    Membre à l'essai
    Bonjour,

    Merci de votre aide j'ai réussi^^
    je passe par Axios qui est plus simple en plus d'utilisation.