我正在尝试解析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()正在对它创建的字符串做了什么...但我不知道问题是什么或如何修复它。
答案 0 :(得分:1)
执行以下操作:
$str_xml = $objClient->__getLastResponse();
$str_xml = strstr($str_xml, '<');
$rs_xml = simplexml_load_string($str_xml);
因为这是在第一个开放元素之前剥离东西的快速而简单的黑客。