javascript - 我收到错误 "TypeError: xml.getElementsByTagName is not a function"

标签 javascript xml

我收到错误“TypeError:xml.getElementsByTagName 不是函数”

错误在于“var xmlDoc = new DOMParser().parseFromString(xml,'text/xml');”

我该如何解决这个问题? 我已经为此工作了几个小时,但仍然没有结果

<!DOCTYPE html>
<html>
 <meta charset="UTF-8"> 
<body>

<p id="demo"></p>

<script>

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {

   if (xhttp.readyState == 4 && xhttp.status == 200) {
       myFunction(xhttp);
    }
}
xhttp.open("GET", "http://LEMONPIE-PC/erdas-iws/ogc/wms/?service=WMS&request=getcapabilities", true);
xhttp.send();

function myFunction(xml) {

    var xmlDoc = new DOMParser().parseFromString(xml,'text/xml');

    console.log(xmlDoc);

    document.write("<table border='1'>");
    var x=xmlDoc.getElementsByTagName("Layer");
    for (i=0;i<x.length;i++)
    { 
        document.write("<tr><td>");
        document.write(x[i].getElementsByTagName("Layer")[0].childNodes[0].nodeValue);
        document.write("</td><td>");
        document.write(x[i].getElementsByTagName("Style")[0].childNodes[0].nodeValue);
        document.write("</td></tr>");
    }
    document.write("</table>");


}



</script>

</body>
</html>

最佳答案

myFunction(xhttp);  <-- Look at what you are passing to the method

您传入 XMLHttpRequest 对象并将其视为文本(但情况并非如此)。您需要引用 XMLHttpRequest 对象保存的responseText。

myFunction(xhttp.responseText);

或者如果您正在获取 XML,我不确定您为什么要再次解析它,因为 XMLHttpRequest 对象会为您完成此操作。只要它是有效的 XML 文档,它就应该可以与 responseXML 一起使用。

myFunction(xhttp.responseXML);  

关于javascript - 我收到错误 "TypeError: xml.getElementsByTagName is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33643234/

相关文章:

java - 在 Android 中旋转文本(不是图像)

java - XML 解析太慢了!

python - 使用lxml解析kml文件

javascript - Backbone 不会触发简单模型的事件

javascript - 字符串中的所有字符都必须匹配正则表达式

javascript - 获取匹配项和非匹配项的数组

javascript - 尝试在函数中显示/隐藏时,foreach 循环中的 div #id 仅选择最后一个变量

javascript - 无法自定义交互式 JavaScript 内容

xml - 使用 TWebBrowser 在 Vista 上像 IE 一样查看 XML

xml - 如何为 XML Schema 中的 fractionDigits 限制指定最小值?