Récupérer des données depuis un document XML
Bonjour à tous.
Je souhaiterais commencer par m'excuser, vu la fréquence des posts à propos de la lecture d'XML en JS.
Malgré toutes mes recherches sur le sujet, je n'ai rien trouvé de satisfaisant (soit trop simple pour mon cas, soit trop avancé).
J'expose donc mon problème : je dispose d'un fichier "donnees.xml" de ce type
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<root>
<branche1>
<ss-branche1>
<tag1>toto</tag1>
<tag2>tata</tag2>
</ss-branche1>
...(même forme que ss-branche1)
</branche1>
<branche2>
...(même forme que branche1)
</branche2>
</root> |
Mon objectif est de récupérer les données contenues dans tous les tag1 et tag2 pour les insérer en tant qu'option d'un select
Pour l'instant, j'en suis à ce point qui ne fonctionne pas du tout :
Code:
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
|
var docXml;
function loadXML(){
// Routine de vérification si le navigateur gêre la méthode utilisée
if (document.implementation && document.implementation.createDocument) {
// déclaration pour Mozilla et FF
docXml = document.implementation.createDocument('', '', null);
}
else if (window.ActiveXObject){
// déclaration pour IE
docXml = new ActiveXObject("Microsoft.XMLDOM");
}
else{ alert('Votre navigateur ne saurait pas éxécuter ce script.'); }
docXml.load("avantages.xml");
}
window.onload = function(){ loadXML(); createSelectAv();}
function createSelectAv(){
var noeud = docXml.getElementsByTagName('avantage');
for(var i=0;i < noeud.length; i++){
var nom = noeud[i].getElementsByTagName('nom').firstChild.value;
var cout = noeud[i].getElementsByTagName('cout').firstChild.value;
document.getElementById('selectAv').add(nom+' (Cout : '+cout+')', null);
}
document.getElementById('avantages').appendChild(select);
//générer un select contenant les nom des avantages et affichant le coût une fois selectionné
//type <select><option>nom (Cout : X)</option></select>
} |
Auriez-vous une idée pour me dépanner (quitte à modifier tout ça pour avoir le comportement voulu, autant que ça fonctionne :lol:)?