2012-05-26 181 views
0

我在解析javascript代碼中的xml響應時遇到了一些麻煩(使用extjs 4,但我認爲這裏沒關係)。Javascript,無法解析XML子節點

XML響應是這樣的:

<response> 
    <id>9</id> 
    <time>2012-05-24 14:22:44</time> 
    <name>user</name> 
    <message>message</message> 
    <p2pchat> 
    <requestor>user1</requestor> 
    <requested>user2</requested> 
    <time>2012-05-26 12:13:28</time> 
    <message>msg</message> 
    </p2pchat> 
</response> 

我沒有煩惱解析1級元素,如ID,時間,姓名和消息,但我的js代碼無法訪問更深的。該代碼是:代碼執行

var response = xmlHttpGetMessages.responseText; 
response = xmlHttpGetMessages.responseXML.documentElement; 
idArray = response.getElementsByTagName("id"); 
nameArray = response.getElementsByTagName("name"); 
timeArray = response.getElementsByTagName("time"); 
messageArray = response.getElementsByTagName("message"); 

requestorsArray = response.getElementsByTagName("p2pchat/requestor"); 
requestedsArray = response.getElementsByTagName("p2pchat/requested"); 
timep2pArray = response.getElementsByTagName("p2pchat/time"); 
messagep2pArray = response.getElementsByTagName("p2pchat/message"); 

後,最後四個數組的長度始終爲0,還沒有從我的XML響應獲取。 我搜索谷歌的方式來解析xml樹中的內部元素,但在10個不同的頁面中,我找到了近10個不同的sintaxs,沒有人似乎爲我工作......任何想法?

回答

0

在谷歌一對夫婦的數據挖掘小時紅粉我的解決方案,我張貼在這裏,所以如果有人遇到同樣的問題,發現這篇文章有我使用的解決方案:

var xmlp2pchat = response.getElementsByTagName("p2pchat"); 

var requestorsArray = Array(); 
var requestedsArray = Array(); 
var timep2pArray = Array(); 
var messagep2pArray = Array(); 

for(var i=0;i<xmlp2pchat.length;i++) { 
    var x = xmlp2pchat[i].getElementsByTagName("requestor"); 
    var y = xmlp2pchat[i].getElementsByTagName("requested"); 
    var z = xmlp2pchat[i].getElementsByTagName("time"); 
    var t = xmlp2pchat[i].getElementsByTagName("message"); 

    for(var j=0;j<x.length;j++) { 
    requestorsArray.push(x[j]); 
    requestedsArray.push(y[j]); 
    timep2pArray.push(z[j]); 
    messagep2pArray.push(t[j]); 
    } 

} 

然後我用它與

var whatever = requestorsArray[i].firstChild.data