在XML中读取自闭合标记时,JavaScript会中断

时间:2012-03-22 16:30:23

标签: javascript xml

我正在使用JavaScript将XML文件写入HTML文件。

这是我正在使用的JavaScript:

if(window.XMLHttpRequest){
   xmlhttp=new XMLHttpRequest();
}
else{
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","file.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByTagName("tagParent");

document.write(x.getElementsByTagName("tagChild")[0].childNodes[0].nodeValue);

该脚本将适用于除自我关闭xml元素(<element/>)之外的所有内容。

示例XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<tagParent>
    <tagChild/>
</tagParent>

脚本在到达自我结束标记时会中断和停止。

如果要输出0或“”,我需要做什么?它为什么会破碎?

1 个答案:

答案 0 :(得分:2)

它因为元素为空而中断。它没有任何孩子,因此当您尝试获取第一个孩子的nodeValue时,会出现错误,因为undefined没有0属性。

你想要的东西是:

var dataNodes, value;
dataNodes = x.getElementsByTagName("tagChild")[0].childNodes;
if (dataNodes.length) {
    value = dataNodes[0].nodeValue;
} else {
    value = 0;
}
document.write(value);