首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChildNodes/NodeValue混淆

ChildNodes/NodeValue混淆
EN

Stack Overflow用户
提问于 2011-07-10 03:16:42
回答 2查看 2.9K关注 0票数 2

我是Ajax的新手。

我正在尝试解析this document

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

这是一小段代码。如果我尝试警告第一个值,它将显示为空。

代码语言:javascript
复制
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:

代码语言:javascript
复制
[0] : clientName, 
[1] : clientStreetAddress, 
[2] : clientCity
[n] : ...and so on... 

那么我在这里错过了什么呢?很明显,我的事实不是很清楚。请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2011-07-10 03:24:40

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

代码语言:javascript
复制
var clientName = client.childNodes.selectSingleNode('./clientName').nodeValue;
票数 0
EN

Stack Overflow用户

发布于 2011-07-10 22:27:31

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

代码语言:javascript
复制
var clientDoc = request.responseXML;
var clientName = clientDoc.evaluate("data/client[1]/clientName", clientDoc, null, XPathResult.STRING_TYPE, null).stringValue

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

也感谢Guffa的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6636927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档