无法从SOAP解析xml

时间:2016-07-16 11:15:47

标签: javascript html xml soap

我有一个XML作为使用JS的SOAP服务的响应。但我无法用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);

有什么问题?

1 个答案:

答案 0 :(得分:2)

您的网络服务以这种格式返回XML:

<string>XML as TEXT</string>

因此,您需要解析XML as TEXT以获取XML文档。请知道这个演示:https://jsfiddle.net/iRbouh/q20w39f8/

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

  

同源策略限制文档或脚本的加载方式   一个来源可以与来自另一个来源的资源进行交互。它是一个   用于隔离潜在恶意攻击的关键安全机制   文档。

简而言之,您 CAN&#39; 向该网络服务发出ajax请求。

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