2012-09-19 60 views
2

我想解析soap服務的xml響應。但是,我無法獲得simplexml_load_string的工作!這是我的代碼:simplexml_load_string不適用於肥皂響應

//make soap call 
objClient = new SoapClient('my-wsdl', 
    array('trace' => true,'exceptions' => 0, 'encoding' => 'UTF-8')); 
$soapvar = new SoapVar('my-xml', XSD_ANYXML); 
$objResponse = $objClient->__soapCall($operation, array($soapvar)); 

//process result 
$str_xml = $objClient->__getLastResponse(); 
$rs_xml = simplexml_load_string($str_xml); 

... $ rs_xml總是隻有一個名稱爲Envelope的元素。但是,如果我使用*「print var_export($ objClient - > __ getLastResponse(),true);」*將結果轉儲到我的瀏覽器,然後剪切並粘貼到我的代碼中作爲字符串變量,它可以工作精細!這就是我的意思是:

$str_xml = 'my cut and pasted xml'; 
$rs_xml = simplexml_load_string($str_xml); 

如此看來問題就主題相關的東西$ objClient - > __ getLastResponse()獲得在做它創建的字符串...但我在一個無所適從問題是或如何解決它。

回答

1

執行以下操作:

$str_xml = $objClient->__getLastResponse();  
$str_xml = strstr($str_xml, '<'); 
$rs_xml = simplexml_load_string($str_xml); 

由於這是一個快速簡便的黑客第一開口元素之前脫光東西。

+0

謝謝,但這沒有奏效。我今天早上做了一些步驟,這是一個命名空間問題......幾乎在那裏! – adamf321