JavaScript解析XML子节点值返回null的原因及相关疑问
问题原因及解决办法
1. XML存在语法错误
你的XML代码里第二个<examplevalue>标签未正确闭合,少了结尾的>,正确的XML应该是:
<root><example><examplevalue>exampletext</examplevalue><examplevalue>exampletext2</examplevalue></example></root>
语法错误会直接导致DOM解析异常,这是需要先修正的基础问题。
2. 元素节点的nodeValue本身就是null
你代码里coll[0]是<example>元素节点,它的childNodes[0]是<examplevalue>元素节点。元素节点的nodeValue属性本来就是null,只有文本节点、注释节点这类节点才会有实际的nodeValue值。要拿到<examplevalue>里的文本,有几种可行方式:
- 方式一:获取元素内部的文本节点值
console.log(coll[0].childNodes[0].firstChild.nodeValue); - 方式二:用
textContent属性(现代浏览器都支持,写法更简洁)console.log(coll[0].childNodes[0].textContent); - 方式三:直接定位到
<examplevalue>元素(逻辑更直观)var exampleValues = xmlDoc.getElementsByTagName("examplevalue"); console.log(exampleValues[0].textContent);
3. 关于getElementsByTagName的返回值
在XML DOM环境中,getElementsByTagName返回的是NodeList(节点列表),不是HTMLCollection。HTMLCollection是HTML DOM专属的对象,比如在网页中调用document.getElementsByTagName才会返回它。两者都是类数组结构,用法相近,但分属不同DOM环境的返回类型。
内容的提问来源于stack exchange,提问作者Laghorn
相关产品推荐
相关产品推荐

