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

标签 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 或 ""?为什么会坏?

最佳答案

它正在中断,因为元素是空的。它没有任何 child ,所以当您尝试获取第一个 child 的 nodeValue 时,它会出错,因为 undefined 没有 0 属性(property)。

你想要的是:

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

关于JavaScript 在读取 XML 中的自闭合标记时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826531/

相关文章:

javascript - 显示/隐藏 div 的问题 - 单击外部 div 来隐藏它时,您需要单击两次才能再次显示它

javascript - ajax函数自动重新加载

xml - 有没有办法将一个代码片段嵌入另一个代码片段?

java - UTF-8 到 UTF16 解析

.net - <92FB64J> 是无效的 XML 标签吗?

php - 将元素与动态属性值相匹配

c# - 如何使用 XmlDocument/XmlDeclaration 添加自定义 XmlDeclaration?

javascript - 如何更新多个数组元素

JavaScript 的 confirm() 的 PHP 版本

javascript - 限制IE8获取css文件