Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 从xml获取数组中的特定节点值_Javascript_Jquery_Arrays_Xml_Xmlhttprequest - Fatal编程技术网

Javascript 从xml获取数组中的特定节点值

Javascript 从xml获取数组中的特定节点值,javascript,jquery,arrays,xml,xmlhttprequest,Javascript,Jquery,Arrays,Xml,Xmlhttprequest,我有一个变量名作为javascript函数的结果 结果变量的值是xml 我只需要使用opportunityid(在图中突出显示)值形成一个数组 如何从特定的节点值中获取并形成数组 我被用于以下功能 function guid(){ var xml = "<?xml version='1.0' encoding='utf-8'?>" + "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envel

我有一个变量名作为javascript函数的结果

结果变量的值是xml

我只需要使用opportunityid(在图中突出显示)值形成一个数组

如何从特定的节点值中获取并形成数组

我被用于以下功能

function guid(){
var xml = "<?xml version='1.0' encoding='utf-8'?>" + 
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + 
    GenerateAuthenticationHeader() +
    "<soap:Body>" + 
    "<RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" + 
    "<query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" + 
    "<q1:EntityName>opportunity </q1:EntityName>" + 
    "<q1:ColumnSet xsi:type='q1:ColumnSet'>" + 
    "<q1:Attributes>" + 
    "<q1:Attribute>opportunity id</q1:Attribute>" +
    "</q1:Attributes>" + 
    "</q1:ColumnSet>" + 
    "<q1:Distinct>false</q1:Distinct>" + 

    "</query></RetrieveMultiple>" +
    "</soap:Body></soap:Envelope>";


    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);

    var result = xmlHttpRequest.responseXML.xml;
    var doc = new ActiveXObject("MSXML2.DOMDocument");
    doc.async = false;
    doc.loadXML(result);

}
函数guid(){
var xml=”“+
"" + 
GenerateAuthenticationHeader()+
"" + 
"" + 
"" + 
“机会”+
"" + 
"" + 
“商机id”+
"" + 
"" + 
“假”+
"" +
"";
var xmlHttpRequest=新的ActiveXObject(“Msxml2.XMLHTTP”);
xmlHttpRequest.Open(“POST”,“/mscrmservices/2007/CrmService.asmx”,false);
setRequestHeader(“SOAPAction”http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
setRequestHeader(“内容类型”,“text/xml;charset=utf-8”);
setRequestHeader(“内容长度”,xml.Length);
xmlHttpRequest.send(xml);
var result=xmlHttpRequest.responseXML.xml;
var doc=新的ActiveXObject(“MSXML2.DOMDocument”);
doc.async=false;
doc.loadXML(结果);
}

我可以看到xml的结构,如下所示:

<soap:Body>
    <RetrieveMultipleResponse>
      <RetrieveMultipleResult>
        <BusinessEntities>
          <BusinessEntity>
            <q1:oppourtunityid>
            </q1:oppourtunityid>
          </BusinessEntity>
        </BusinessEntities>
      </RetrieveMultipleResult>
   </RetrieveMultipleResponse>
 </soap:Body>
var businessEntites = result.getElementsByTagName('BusinessEntity');
var oppidArr = [];
for(var i=0; i<businessEntities.length; i++)
{
   var oppid = businessEntites.item(i).getElementsByTagName('q1:oppourtunityid').item(0).childNodes[0].nodeValue;
   oppidArr[i] = oppid;
}

为此,您可以使用DOM元素,如下所示:

<soap:Body>
    <RetrieveMultipleResponse>
      <RetrieveMultipleResult>
        <BusinessEntities>
          <BusinessEntity>
            <q1:oppourtunityid>
            </q1:oppourtunityid>
          </BusinessEntity>
        </BusinessEntities>
      </RetrieveMultipleResult>
   </RetrieveMultipleResponse>
 </soap:Body>
var businessEntites = result.getElementsByTagName('BusinessEntity');
var oppidArr = [];
for(var i=0; i<businessEntities.length; i++)
{
   var oppid = businessEntites.item(i).getElementsByTagName('q1:oppourtunityid').item(0).childNodes[0].nodeValue;
   oppidArr[i] = oppid;
}
var businessEntites=result.getElementsByTagName('BusinessEntity');
var oppidArr=[];

对于(var i=0;i我想,您应该尝试下面的代码,我从Mozilla的站点复制了一些代码,因为它有带条件的最佳实践代码:)

函数guid(){
var xml=”“+
"" + 
GenerateAuthenticationHeader()+
"" + 
"" + 
"" + 
“机会”+
"" + 
"" + 
“商机id”+
"" + 
"" + 
“假”+
"" +
"";
var-xmlHttpRequest;
如果(window.XMLHttpRequest){//Mozilla,Safari。。。
xmlHttpRequest=新的xmlHttpRequest();
}如果(window.ActiveXObject){//IE
试一试{
xmlHttpRequest=新的ActiveXObject(“Msxml2.XMLHTTP”);
} 
捕获(e){
试一试{
xmlHttpRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
} 
捕获(e){}
}
}
如果(!xmlHttpRequest){
警报(“放弃:(无法创建XMLHTTP实例”);
返回false;
}
xmlHttpRequest.onreadystatechange=getContents;
xmlHttpRequest.open(“POST”,“/mscrmservices/2007/CrmService.asmx”,false);
setRequestHeader(“SOAPAction”http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
setRequestHeader(“内容类型”,“text/xml;charset=utf-8”);
setRequestHeader(“内容长度”,xml.Length);
xmlHttpRequest.send(xml);
函数getContents(){
if(xmlHttpRequest.readyState==4){
if(xmlHttpRequest.status==200){
var xmldoc=xmlHttpRequest.responseXML;
var root_node=xmldoc.getElementsByTagName('q1:Attributes')。项(0);
警报(根节点.firstChild.data);
}否则{
警报(“请求有问题”);
}
}
}
}

这种情况会发生在客户端吗?您是否尝试将xml解析为javascript对象,然后在正确的对象组件上进行迭代?如果是这样,您可以使用lodash对其进行爬网,或者您可以构建自己的爬网器。对象不支持,或者在我实现javascript函数时会出现方法错误。请转到再次回答我的问题。我添加了获取xml的javascript。我只是在代码中使用var businessEntites=result.getElementsByTagName('BusinessEntity');它显示对象不支持或方法错误