Javascript 未捕获类型错误:无法读取属性';nodeValue';未定义的

Javascript 未捕获类型错误:无法读取属性';nodeValue';未定义的,javascript,ajax,xml,debugging,Javascript,Ajax,Xml,Debugging,我正在尝试使用AJAX解析xml文件。有趣的是,当我为不同的XML文件尝试相同的代码时,它成功了。如果我添加一个警报(txt)就在txt=txt+x[i]之后。子节点[0]。节点值+“”行,它显示所有名称的添加 这是我的密码: <!DOCTYPE html> <html> <head> <title>Test Page for XML</title> </head> <body> <p id="de

我正在尝试使用AJAX解析xml文件。有趣的是,当我为不同的XML文件尝试相同的代码时,它成功了。如果我添加一个
警报(txt)就在
txt=txt+x[i]之后。子节点[0]。节点值+“
行,它显示所有名称的添加

这是我的密码:

<!DOCTYPE html>
<html>
<head>
<title>Test Page for XML</title>
</head>
<body>
    <p id="demo"> This is a test </p>
    <button type="button" onclick="loadDoc()"> Click here to request data </button>
<script>

function loadDoc() {
  var xhttp, xmlDoc, txt, x, i;
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    xmlDoc = xhttp.responseXML;
    txt = "";
    x = xmlDoc.getElementsByTagName('sort-name');
    for (i = 0; i < x.length; i++) {

      txt = txt + x[i].childNodes[0].nodeValue + "<br>";
    }

    document.getElementById("demo").innerHTML = txt;
    }
  };
  xhttp.open("GET", "MemberData.xml", true);
  xhttp.send();
}
</script>
</body>
</html>

XML的测试页

这是一个测试

单击此处请求数据 函数loadDoc(){ var xhttp,xmlDoc,txt,x,i; xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数(){ 如果(xhttp.readyState==4&&xhttp.status==200){ xmlDoc=xhttp.responseXML; txt=“”; x=xmlDoc.getElementsByTagName('sort-name'); 对于(i=0;i”; } document.getElementById(“demo”).innerHTML=txt; } }; open(“GET”,“MemberData.xml”,true); xhttp.send(); }
这是指向XML文件的链接


您是否想过先检查
x[i].childNodes
的长度?您可以通过运行
console.log(“xi childnodes”,x[i].childnodes”)来检查
x[i]
在该行之前。然后在浏览器中点击f12查看输出。更有可能的是,虽然有一个具有标记名排序名称的元素,但它不一定要有子节点列表。错误告诉您,对于
i
x[i]的某些值,子节点[0]
未定义的
您是对的,有一个具有标记名排序名称和长度0的元素。这在XML文件中意味着什么?它是一个没有文本节点的元素“排序名称”吗?是的,如果您搜索文档,您将在
statedistrict>OH08
找到至少一个
。在尝试处理输入的可能属性之前,最好先验证输入。是否先检查
x[i].childNodes
的长度?您可以通过运行
console.log(“xi childnodes”,x[i].childnodes”)来检查
x[i]
在该行之前。然后在浏览器中点击f12查看输出。更有可能的是,虽然有一个具有标记名排序名称的元素,但它不一定要有子节点列表。错误告诉您,对于
i
x[i]的某些值,子节点[0]
未定义的
您是对的,有一个具有标记名排序名称和长度0的元素。这在XML文件中意味着什么?它是一个没有文本节点的元素“排序名称”吗?是的,如果您搜索文档,您将在
statedistrict>OH08
找到至少一个
。在处理输入的可能属性之前,最好先验证输入