Lire du XML en Javascript avec jQuery

Mars 2013

Javascript permet de manipuler le DOM, qui n'est rien d'autre qu'un document XML. On peut aussi utiliser Javascript pour lire des données XML (comme on le fait avec un parser), via l'AJAX.

Un appel Ajax peut retourner différents types de données : texte brut, JSON, HTML ou XML. Le XML retourné par un appel JSON est automatiquement parsé par Javascript, et on y accède via la variable responseXML :

xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
	if( xhr.readyState == 4 && xhr.status == 200 ){
		doc = xhr.responseXML;
		nom = doc.getElementsByTagName("nom");
		alert("Nom: "+nom);
	}
}

Le document XML se lit exactement comme le DOM de la page web, avec les fonctions getElementsByTagName, getElementById ainsi que toutes les autres fonctions de navigation dans l'arborescence.

En théorie il est possible de lire du XML depuis une chaine de caractères, et pas depuis un appel AJAX, en utilisant createDocument, mais cette technique n'est pas très propre. Javascript n'a pas été conçu dans cet esprit, normalement les données ne doivent pas être mélangées au code et ne doivent pas se retrouver dans une chaine de caractère, pour cela il vaut mieux utiliser un objet JSON.

Allez donc jeter un oeil sur cette page : imprimer le titre du classeur excel.

Lire du XML avec jQuery

On peut utiliser jQuery pour manipuler et parcourir le XML retourné par un appel AJAX, simplement en utilisant un contexte, c'est à dire en passant le document (responseXML) en second paramètre du sélecteur :

xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
	if( xhr.readyState == 4 && xhr.status == 200 ){
		doc = xhr.responseXML;
		nom = $('nom', doc).text(); // jQuery utilisé pour lire du XML
		alert("Nom: "+nom);
	}
}

Fini de lire cette page ? allez faire un tour ici : texte jean cousu, ça peut vous intéresser.

2 commentaires :
commentaire n°2907 par Pseudo
Pseudo samedi 18 octobre 2014, 17:29
Oui c'est vrai. C'est quoi onreadystatechange?
commentaire n°2951 par Galdon
Galdon dimanche 21 décembre 2014, 17:13
C'est un événement qui se produit sur un objet xhr (donc lors d'une requête AJAX), lorsque le serveur retourne des données au client (autrement dit au navigateur). Lorsque cet événement se produit, on peut avoir plus de détail en regrdant dans xhr.readyState. L'état 4 signifie "la requête est terminée". xhr.status contient le code HTTP retourné par le serveur.
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré