2010-12-06 43 views
8

我尝试循环通过由用户在我的网站如何通过JavaScript中的XML节点循环?

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); 
} 

的XML这个样子的

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

UPDATE

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); 
} 

回答

12

一个创建连接HTML表XML节点关于解析XML的最不直观的事情是,元素标签中的文本实际上是一个你必须穿过的节点。

假设它是<user>text data</user>,您不仅需要遍历用户元素的文本节点以提取文本数据,但必须在DOM中创建一个包含该数据的文本节点才能看到它。见nodeValue与和createtextnode

// 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

我已经位于其位于行中的问题“VAR根= xmlDoc.getElementsByTagName(” websites_name“);”我做了什么错?看看我的更新。您的解决方案与textNode不同。它实际上是用户 – einstein 2010-12-06 03:03:45