ChildNodes / NodeValue混淆

时间:2011-07-09 19:16:42

标签: javascript ajax xml nodevalue

我是Ajax的新手。

我正在尝试解析this document

我已经到了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文档,每个“client”标记都有以下ChildNodes:

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

那我在这里错过了什么?显然,我没有直截了当的事实。请帮忙!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

当然,我认为必须对其进行修改以处理IE浏览器,并且必须将路径设置为遍历客户端。但是,实际的,最简单的答案就在上面。

也感谢Guffa的帮助!