0/5 (5 avis)
Snippet vu 17 198 fois - Téléchargée 18 fois
// génère un tableau HTML sur la base d'un noeud XML, le nom des noeuds qu'on veut extraire, // et la liste des attributs contenant les données // XMLnode : objet XML noeud à parcourir // NodeName : nom des noeuds à rechercher // attrName = array des noms d'attributs à rechercher // return : objet table à ajouter (appendChild) function CreateTableFromXMl(XMLnode, NodeName, attrName) { var elts = XMLnode.getElementsByTagName(NodeName); if (!elts) return; // rien si vide var tbl = document.createElement("TABLE"); tbl.setAttribute("border", 1); var tr = document.createElement("TR"); var tbody=document.createElement("TBODY"); var thead=tbl.createTHead(); var tfoot=tbl.createTFoot(); var n=attrName.length; for (var j = 0; j < n; j++) { var td = document.createElement("TH"); td.appendChild(document.createTextNode(attrName[j])); tr.appendChild(td); } thead.appendChild(tr); m = elts.length; for(var i = 1; i < m; i++){ var tr = document.createElement("TR"); for(var j = 0; j < n ;j++){ var td=document.createElement("TD"); td.appendChild(document.createTextNode(ValeurAttribut(elts[i], attrName[j]))); tr.appendChild(td); } tbody.appendChild(tr); } tbl.appendChild(thead); tbl.appendChild(tfoot); tbl.appendChild(tbody); return tbl; } function ValeurAttribut(noeud, attribut) { if (!noeud) return ""; if ((!attribut) || (attribut=="")) return ""; if (noeud.getAttribute(attribut)) return noeud.getAttribute(attribut); if (noeud.attributes[attribut]) return noeud.attributes[attribut].value; return ""; }
21 nov. 2008 à 11:14
20 nov. 2008 à 23:16
A+
20 nov. 2008 à 21:52
20 nov. 2008 à 12:26
je pense que le chargement du fichier .xml via
XMLnode = docXml.load("xxxx.xml"); n'est pas bon.
Mais pourquoi?
un document.write(XMLnode); donne simplement true
et firebug dit que
XMLnode.getElementsByTagName(NodeName) n'est pas un fonction!!!
Je nage....
18 nov. 2008 à 23:27
Je galère... Je n'arrive rien à afficher... voici ma page html si vous avez des idées :
<html>
<head>
<title>Tableau depuis xml</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<!-- <script type="text/javascript" src="table_depuis_xml.js"></script> -->
<script type="text/javascript">
AfficheDocXML();
// génère un tableau HTML sur la base d'un noeud XML, le nom des noeuds qu'on veut extraire,
// et la liste des attributs contenant les données
function AfficheDocXML(){
if (document.implementation && document.implementation.createDocument) {
// déclaration pour Mozilla et FF
docXml = document.implementation.createDocument('', '', null);
document.write ("Firefox");
}
else if (window.ActiveXObject){
// déclaration pour IE
docXml = new ActiveXObject("Microsoft.XMLDOM");
document.write ("IE");
}
else {
alert('Votre navigateur ne saurait pas éxécuter ce script.');
}
XMLnode = docXml.load("catalogue.xml");
NodeName = 'Name';
attrName = '';
// XMLnode : objet XML noeud à parcourir
// NodeName : nom des noeuds à rechercher
// attrName = array des noms d'attributs à rechercher
// return : objet table à ajouter (appendChild)
var elts = XMLnode.getElementsByTagName(NodeName);
if (!elts){document.write ("pas de name");} return; // rien si vide
var tbl = document.createElement("TABLE");
tbl.setAttribute("border", 1);
var tr = document.createElement("TR");
var tbody=document.createElement("TBODY");
var thead=tbl.createTHead();
var tfoot=tbl.createTFoot();
//var n=attrName.length;
for (var j = 0; j < 100; j++) {
var td = document.createElement("TH");
td.appendChild(document.createTextNode(attrName[j]));
tr.appendChild(td);
}
thead.appendChild(tr);
//m = elts.length;
for(var i = 1; i < 200; i++){
var tr = document.createElement("TR");
for(var j = 0; j < n ;j++){
var td=document.createElement("TD");
td.appendChild(document.createTextNode(ValeurAttribut(elts[i], attrName[j])));
tr.appendChild(td);
}
tbody.appendChild(tr);
}
tbl.appendChild(thead);
tbl.appendChild(tfoot);
tbl.appendChild(tbody);
return tbl;
}
}
function ValeurAttribut(noeud, attribut) {
if (!noeud) return "";
if ((!attribut) || (attribut=="")) return "";
if (noeud.getAttribute(attribut)) return noeud.getAttribute(attribut);
if (noeud.attributes[attribut]) return noeud.attributes[attribut].value;
return "";
}
</script>
</head>
</html>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.