javascript - 无法从 SOAP 解析 xml

标签 javascript html xml soap

我使用 JS 从 SOAP 服务获得了 XML 作为响应。但我无法在 HTML 中显示它。 这是我的 JS 代码。

 function renderXML(xmlDoc) {
                  var i;
                  var list="<ul class='ui-listview'> "; 
                  var x = xmlDoc.getElementsByTagName("Table");
                  for (i = 0; i <x.length; i++) { 
                    list += "<li class='ui-li-static'>" +
                    x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue +
                    "</li> " ;
                  }
                  list += "</ul>";
                  document.getElementById("ws_data").innerHTML = list;
                }

我得到了这个 XML 作为响应。 http://www.webservicex.net/country.asmx/GetCountries

显示

app.js:33 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null

在这条线上

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

但是如果我向该函数发送硬编码的 xml,它就可以正常工作!并以 html 形式显示。

var data= jQuery.parseXML("<NewDataSet> <Table> <Name>Afghanistan, Islamic State of</Name> </Table> <Table> <Name>Albania</Name> </Table> <Table> <Name>Algeria</Name> </Table> <Table> <Name>American Samoa</Name> </Table> </NewDataSet> ");


renderXML(data);

问题是什么?

最佳答案

您的 Web 服务返回以下格式的 XML:

<string>XML as TEXT</string>

因此,您需要将 XML 解析为 TEXT 才能获取 XML 文档。请查看此演示:https://jsfiddle.net/iRbouh/q20w39f8/

此外,检查服务器响应头后,没有Access-Control-Allow-Origin,这意味着服务器不允许跨域访问。由于您发出跨域 HTTP 请求,您的请求将被浏览器按照同源策略拒绝:

The same-origin policy restricts how a document or script loaded from one origin can interact with a resource from another origin. It is a critical security mechanism for isolating potentially malicious documents.

简而言之,您不能向该 Web 服务发出 ajax 请求。

PS:在我的演示中,我使用了 CORS 代理:https://crossorigin.me/

关于javascript - 无法从 SOAP 解析 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410622/

相关文章:

javascript - Html 一次只为非单选按钮选择一个按钮

javascript - 如何将变量从 JavaScript 传递到 HTML?

php - 用于传递 PHP 变量的 Javascript 语法

javascript - CSS 360旋转进度径向使用JS

java - 我可以根据 XSD 验证 XML 元素的数据类型、大小写、长度和空检查吗?

xml - 将元素插入 xml 会产生不必要的属性 xmlns=

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL and SyntaxError: unterminated string literal

javascript - (初学者)如何动态修改一个json文件

html - 为什么我的元素不能一直居中?

java - 使用 Jackson 将带有 HashMap 的对象转换为 XML