在我的Javascript代码中解析xml响应时遇到了一些麻烦(使用extjs 4,但我觉得这里没关系)。
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>
我没有麻烦解析第一级元素,如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 :(得分: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