子节点的时候存在缺陷/ NodeValue混乱



我是Ajax新手。

我正在尝试解析这个文档。

我已经得到了readystatechange,它正在获取XML。但是当涉及到childNodes和它们的值时,我感到困惑。

下面是一小段代码。如果我尝试提醒第一个值,它会显示为空白。

var clientList = request.responseXML.getElementsByTagName('client');
for (var i=0;i<clientList.length;i++) {
    var client=clientList[i];
    var clientName = client.childNodes[0].nodeValue;
    alert(clientName)

据我所知,基于XML文档,每个"客户机"标记将具有以下ChildNodes:

[0] : clientName, 
[1] : clientStreetAddress, 
[2] : clientCity
[n] : ...and so on... 

我在这里错过了什么?很明显我没有搞清楚事实。请帮助!

应该使用标记的名称从XML读取数据,而不是根据它们的顺序。解析文档时,它可能包含用于元素之间空白的textnode,这将抵消包含所需数据的元素的索引。

var clientName = client.childNodes.selectSingleNode('./clientName').nodeValue;

感谢TeslaNick建议我使用XPATH。答案如下:

var clientDoc = request.responseXML;
var clientName = clientDoc.evaluate("data/client[1]/clientName", clientDoc, null, XPathResult.STRING_TYPE, null).stringValue

当然,我认为这必须修改以处理IE浏览器,并且路径必须设置为通过客户端循环。然而,实际的、最简单的答案在上面。

也感谢Guffa的帮助!

相关内容

  • 没有找到相关文章

最新更新