0

我需要一些帮助;

我需要将我的 SOAP 结果解析为几个 PHP 数组。

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 <SOAP-ENV:Body>
<i2:GetDataResponse id="ref-1" xmlns:i2="http://schemas.microsoft.com/clr/nsassem/Teleperformance.Statistics.Webservice.DataService/CTIStatServer">
  <return href="#ref-4"/>
</i2:GetDataResponse>
<i3:Data id="ref-4" xmlns:i3="http://www.twenty4help.com/ps/dataservice.wsdl">
  <Values href="#ref-5"/>
</i3:Data>
<SOAP-ENC:Array id="ref-5" SOAP-ENC:arrayType="xsd:anyType[][13]">
  <item href="#ref-6"/>
  <item href="#ref-7"/>
  <item href="#ref-8"/>
  <item href="#ref-9"/>
  <item href="#ref-10"/>
  <item href="#ref-11"/>
  <item href="#ref-12"/>
  <item href="#ref-13"/>
  <item href="#ref-14"/>
  <item href="#ref-15"/>
  <item href="#ref-16"/>
  <item href="#ref-17"/>
  <item href="#ref-18"/>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-6" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-7" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">64</item>
  <item xsi:type="xsd:long">58</item>
  <item xsi:type="xsd:long">576</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-8" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">21</item>
  <item xsi:type="xsd:long">19</item>
  <item xsi:type="xsd:long">140</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-9" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">36</item>
  <item xsi:type="xsd:long">34</item>
  <item xsi:type="xsd:long">49</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-10" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-11" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-12" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-13" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">51</item>
  <item xsi:type="xsd:long">49</item>
  <item xsi:type="xsd:long">70</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-14" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-15" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">10</item>
  <item xsi:type="xsd:long">10</item>
  <item xsi:type="xsd:long">13</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-16" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-17" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">5</item>
  <item xsi:type="xsd:long">5</item>
  <item xsi:type="xsd:long">8</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
</SOAP-ENC:Array>
<SOAP-ENC:Array id="ref-18" SOAP-ENC:arrayType="xsd:anyType[5]">
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
  <item xsi:type="xsd:long">0</item>
   </SOAP-ENC:Array>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

我需要在单独的 PHP 数组中使用 ref-6 到 ref-18,因为从 ref-6 开始的每个 ref 都是一个电话队列,其中包含呼叫数据。所以在这种情况下,我希望有 13 个 PHP 数组,如 $Queue1、$Queue2 等。所以我可以使用我的 webscipt 中的数组来显示每个队列的调用量,例如

<?php echo $Queue2[2] ?> //answer would be 140 as ref-8 has value 140 at place 3

请不要给我讲课,因为我只是具有一些脚本技能的呼叫中心主管。所以我实际上是一个菜鸟:)

我做到了这一点:

出于测试目的,我使用存储肥皂输出的本地文件 xml1.xml。所以 $xml 在最终代码中将是 $result 。

<?php
if (file_exists('xml1.xml')) {
    $xml = simplexml_load_file('xml1.xml'); 
} else {
    exit('Failed to open xml1.xml.');
}
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
foreach ($xml->xpath('//SOAP-ENC:Array') as $item)
{
  //creaate array code should be here, but do know how to do it.  
        print_r ($item);
}
?>

谢谢你教我一课:) 并帮助我解决这个问题。

4

0 回答 0