2010-12-06 27 views
8

trato de bucle a través de los nodos XML que constan de los usuarios para crear en la tabla HTML en mi sitio web¿Cómo recorro un nodo XML en JavaScript?

for(var user in xmlhttp.getElementsByTagName('user')){ //fix this row to me 
    //Create a new row for tbody 
    var tr = document.createElement('tr'); 
    document.getElementById('tbody').appendChild(tr); 
} 

el aspecto XML como esto

<websites_name> 
<user>...</user> 
<user>...</user> 
. 
. 
. 
</websites_name> 

ACTUALIZACIÓN

xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET","some URL",true); 
xmlhttp.send(); 
var xmlDoc = xmlhttp.responseXML; 
var root = xmlDoc.getElementsByTagName('websites_name'); 
for(var i=0, i<root[0].childNodes.length,i++){ 
    //Create a new row for tbody 
    var tr = document.createElement('tr'); 
    document.getElementById('tbody').appendChild(tr); 
} 

Respuesta

12

Uno de Lo menos intuitivo acerca de analizar XML es que el texto dentro de las etiquetas de los elementos es en realidad un nodo al que debe atravesar.

Suponiendo que es <user>text data</user>, no solo tiene que atravesar el nodo de texto del elemento de usuario para extraer sus datos de texto, sino que tiene que crear un nodo de texto con esos datos en el DOM para verlo. Ver nodeValue y createtextnode y:.

// get XML 
var xml = xhr.responseXML; 

// get users 
var users = xml.getElementsByTagName("user"); 
for (var i = 0; i < users.length; i++) { 
    var user = users[i].firstChild.nodeValue; 
    var tr = document.createElement("tr"); 
    var td = document.createElement("td"); 
    var textNode = document.createTextNode(user); 
    td.appendChild(textNode);   
    tr.appendChild(td);   
    document.getElementById("tbody").appendChild(tr); 
} 
+0

He localizado el problema se encuentra en la fila "var = raíz xmlDoc.getElementsByTagName (" websites_name ");" ¿Qué he hecho mal? Mira mi actualización. Su solución es la misma excepto para el textNode. En realidad, es más nodos XML en el usuario – einstein

+0

bien, sé cuál era el problema. Una muy pequeña. Los scripts que produjeron mi XML, olvidé el encabezado de la fila ("Content-type: text/xml"); " – einstein

+0

impresionante - sí, ese tipo de contenido es muy importante con ajax. esto es mucho más fácil con bibliotecas como jquery ... –

Cuestiones relacionadas