2012-09-19 64 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