Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在Chrome/Opera/Safari中分析XML_Javascript_Google Chrome_Xml Parsing_Safari_Opera - Fatal编程技术网

Javascript 无法在Chrome/Opera/Safari中分析XML

Javascript 无法在Chrome/Opera/Safari中分析XML,javascript,google-chrome,xml-parsing,safari,opera,Javascript,Google Chrome,Xml Parsing,Safari,Opera,我从soapwebservice得到以下响应,我需要解析它以在HTML页面中显示数据 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <ExecuteResponse xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services"> <ExecuteResult i:

我从soapwebservice得到以下响应,我需要解析它以在HTML页面中显示数据

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <ExecuteResponse xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
      <ExecuteResult i:type="b:RetrieveUserPrivilegesResponse" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:b="http://schemas.microsoft.com/crm/2011/Contracts">
        <a:ResponseName>RetrieveUserPrivileges</a:ResponseName>
        <a:Results xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
          <a:KeyValuePairOfstringanyType>
            <c:key>RolePrivileges</c:key>
            <c:value i:type="b:ArrayOfRolePrivilege">
              <b:RolePrivilege>
                <b:BusinessUnitId>e09f3de8-925d-e311-8a5d-000c299c86a3</b:BusinessUnitId>
                <b:Depth>Global</b:Depth>
                <b:PrivilegeId>b7a1f52a-b8a9-11d8-84ab-0007e9e100cc</b:PrivilegeId>
              </b:RolePrivilege>
              <b:RolePrivilege>
                <b:BusinessUnitId>e09f3de8-925d-e311-8a5d-000c299c86a3</b:BusinessUnitId>
                <b:Depth>Global</b:Depth>
                <b:PrivilegeId>655e4282-b8a9-11d8-84ab-0007e9e100cc</b:PrivilegeId>
              </b:RolePrivilege>
              <b:RolePrivilege>
                <b:BusinessUnitId>e09f3de8-925d-e311-8a5d-000c299c86a3</b:BusinessUnitId>
                <b:Depth>Global</b:Depth>
                <b:PrivilegeId>98b5ccb2-b8a9-11d8-84ab-0007e9e100cc</b:PrivilegeId>
              </b:RolePrivilege>
            </c:value>
          </a:KeyValuePairOfstringanyType>
        </a:Results>
      </ExecuteResult>
    </ExecuteResponse>
  </s:Body>
</s:Envelope>
这段代码在IE和Firefox中运行得很好,但我似乎无法在Chrome、Opera或Safari中运行。我已经尝试了各种方法让它在这3个浏览器中工作,但都失败了


任何帮助都将不胜感激!谢谢。

嗯,终于成功了。IE和Firefox可以使用
getElementsByTagName(“b:PrivilegeId”)
,但Chrome、Opera和Safari可以使用
getElementsByTagName(“Privilege”)

因此,我在这里使用了这个很棒的库:检测浏览器并修改代码。现在它就像一个符咒

我的代码现在如下所示:

function extractValuesFromXml(resultXml)
{
    var valueArray = new Array();

    var parseXml;

    if (typeof window.DOMParser != "undefined") 
    {
        parseXml = function(xmlStr) {
            return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
        };
    } 
    else if (typeof window.ActiveXObject != "undefined" &&  new window.ActiveXObject("Microsoft.XMLDOM")) 
    {
        parseXml = function(xmlStr) {
            var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(xmlStr);
            return xmlDoc;
        };
    } 
    else 
    {
        throw new Error("No XML parser found");
    }

    var xmlDoc = parseXml(resultXml);

    if($.browser.msie == true || $.browser.mozilla == true) 
    {
        x = xmlDoc.getElementsByTagName("b:PrivilegeId");
    }
    else
    {
        x = xmlDoc.getElementsByTagName("PrivilegeId");
    }


    for (i = 0; i < x.length; i++)
    {
        if (x[i].childNodes[0] != null && x[i].childNodes[0] != 'undefined' && x[i].childNodes[0].data != null && x[i].childNodes[0].data != 'undefined')
        {
            valueArray[i] = x[i].childNodes[0].data.toUpperCase();;
        }
    }

    return valueArray;  
}
函数extractValuesFromXml(resultXml)
{
var valueArray=新数组();
var-parseXml;
if(typeof window.DOMParser!=“未定义”)
{
parseXml=函数(xmlStr){
return(new window.DOMParser()).parseFromString(xmlStr,“text/xml”);
};
} 
else if(typeof window.ActiveXObject!=“未定义”&&new window.ActiveXObject(“Microsoft.XMLDOM”))
{
parseXml=函数(xmlStr){
var xmlDoc=new window.ActiveXObject(“Microsoft.XMLDOM”);
xmlDoc.async=“false”;
loadXML(xmlStr);
返回xmlDoc;
};
} 
其他的
{
抛出新错误(“未找到XML解析器”);
}
var xmlDoc=parseXml(resultXml);
if($.browser.msie==true | |$.browser.mozilla==true)
{
x=xmlDoc.getElementsByTagName(“b:PrivilegeId”);
}
其他的
{
x=xmlDoc.getElementsByTagName(“PrivilegeId”);
}
对于(i=0;i
function extractValuesFromXml(resultXml)
{
    var valueArray = new Array();

    var parseXml;

    if (typeof window.DOMParser != "undefined") 
    {
        parseXml = function(xmlStr) {
            return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
        };
    } 
    else if (typeof window.ActiveXObject != "undefined" &&  new window.ActiveXObject("Microsoft.XMLDOM")) 
    {
        parseXml = function(xmlStr) {
            var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(xmlStr);
            return xmlDoc;
        };
    } 
    else 
    {
        throw new Error("No XML parser found");
    }

    var xmlDoc = parseXml(resultXml);

    if($.browser.msie == true || $.browser.mozilla == true) 
    {
        x = xmlDoc.getElementsByTagName("b:PrivilegeId");
    }
    else
    {
        x = xmlDoc.getElementsByTagName("PrivilegeId");
    }


    for (i = 0; i < x.length; i++)
    {
        if (x[i].childNodes[0] != null && x[i].childNodes[0] != 'undefined' && x[i].childNodes[0].data != null && x[i].childNodes[0].data != 'undefined')
        {
            valueArray[i] = x[i].childNodes[0].data.toUpperCase();;
        }
    }

    return valueArray;  
}