Javascript 子节点/节点值混淆

Javascript 子节点/节点值混淆,javascript,ajax,xml,nodevalue,Javascript,Ajax,Xml,Nodevalue,我是Ajax新手 我在试着分析 我已经了解了readystatechange,它正在获取XML。但当涉及到子节点及其值时,我会感到困惑 这里有一些代码。如果我试图提醒第一个值,它会显示为空 var clientList = request.responseXML.getElementsByTagName('client'); for (var i=0;i<clientList.length;i++) { var client=clientList[i]; var clien

我是Ajax新手

我在试着分析

我已经了解了readystatechange,它正在获取XML。但当涉及到子节点及其值时,我会感到困惑

这里有一些代码。如果我试图提醒第一个值,它会显示为空

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中读取数据,而不是基于它们的顺序。解析文档时,它可能包含元素之间空白的textnodes,这将抵消包含所需数据的元素的索引

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

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

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浏览器,并且必须将路径设置为循环通过客户端。然而,最简单的实际答案就在上面


也感谢古芙的帮助

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

var clientDoc = request.responseXML;
var clientName = clientDoc.evaluate("data/client[1]/clientName", clientDoc, null, XPathResult.STRING_TYPE, null).stringValue
当然,我认为必须对其进行修改以处理IE浏览器,并且必须将路径设置为循环通过客户端。然而,最简单的实际答案就在上面


也感谢古芙的帮助

或者,使用类似于或jQuery的内容来解析XML document.Ah。可以我假设[0]是因为它以数组的形式返回节点及其内容。我试试看!我不明白为什么,但没用。它现在甚至不会返回空白警报,这意味着中的某些东西会抛出某种类型的错误。TypeError:Object没有“getElementsByTagName”方法@Tom Thorogood:对,这只在document对象中有效,请改用selectSingleNode。我更新了答案中的代码。可以我假设[0]是因为它以数组的形式返回节点及其内容。我试试看!我不明白为什么,但没用。它现在甚至不会返回空白警报,这意味着中的某些东西会抛出某种类型的错误。TypeError:Object没有“getElementsByTagName”方法@Tom Thorogood:对,这只在document对象中有效,请改用selectSingleNode。我更新了答案中的代码。