无法从SOAP解析xml

Can not parse xml from SOAP

本文关键字:解析 xml SOAP      更新时间:2023-09-26

我从使用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 as TEXT以获得XML文档。请查看此演示:https://jsfiddle.net/iRbouh/q20w39f8/

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

同源策略限制文档或脚本从一个来源可以与另一个来源的资源交互。这是一个用于隔离潜在恶意的关键安全机制文件。

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

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