我是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文档,每个“客户端”标记将具有以下ChildNodes:
[0] : clientName,
[1] : clientStreetAddress,
[2] : clientCity
[n] : ...and so on... 那么我在这里错过了什么呢?很明显,我的事实不是很清楚。请帮帮我!
发布于 2011-07-10 03:24:40
您应该使用标记的名称从XML中读取数据,而不是根据它们的顺序。在解析文档时,可能会在元素之间包含空白的文本节点,这将偏移包含所需数据的元素的索引。
var clientName = client.childNodes.selectSingleNode('./clientName').nodeValue;发布于 2011-07-10 22:27:31
感谢TeslaNick建议我改用XPATH。答案如下:
var clientDoc = request.responseXML;
var clientName = clientDoc.evaluate("data/client[1]/clientName", clientDoc, null, XPathResult.STRING_TYPE, null).stringValue当然,我认为必须对此进行修改以处理IE浏览器,并且必须将路径设置为循环通过客户端。然而,实际的、最简单的答案是上面的。
也感谢Guffa的帮助!
https://stackoverflow.com/questions/6636927
复制相似问题