simplexml_load_string不适用于soap响应

时间:2012-09-19 02:31:56

标签: php xml web-services xml-parsing

我正在尝试解析soap服务中的xml响应。但是,我无法让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 个答案:

答案 0 :(得分:1)

执行以下操作:

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

因为这是在第一个开放元素之前剥离东西的快速而简单的黑客。

相关问题