2

我正在尝试解析来自肥皂服务的 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() 对其创建的字符串所做的某些事情有关......但我不知道问题是什么或如何解决它。

4

1 回答 1

1

请执行下列操作:

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

因为在第一个打开元素之前剥离东西是一种快速简便的技巧。

于 2012-09-19T04:31:33.457 回答