Бьюсь об заклад, вопрос в том, когда у вас есть данные SOAP, которые обернуты в пакет XML, какую функцию в PHP вы можете использовать для извлечения данных SOAP?
Я исследовал это в течение часа, потому чтопохожая проблема.То, что сводится к тому, что SOAP обернут в XML, не означает, что вы можете использовать «простую» ;-) функцию XML для извлечения необходимой вам информации SOAP.
Вы должны иметь пространства именв уме.В моем случае у меня было это:
<?xml version="1.0" encoding="utf-8"?>
* <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
* <soap:Body><Request_MerchantStatementResponse xmlns="http://www.netcash.co.za/netserv/ncUpload">
* <Request_MerchantStatementResult>2010/11/06 00:00:00\tOBL\t0\t\tOpening Balance\t100000.00\t+\t0.00\t\t\t\t\t\t\t\r</Request_MerchantStatementResult>
* </Request_MerchantStatementResponse></soap:Body>
* </soap:Envelope>
Мне нужно было извлечь «Request_MerchantStatementResult» и только это.Решение состояло в том, чтобы указать пространства имен, на которые есть ссылки в моем возвращаемом XML.
$xml = simplexml_load_string($response);
echo $xml->children('http://schemas.xmlsoap.org/soap/envelope/')
->children('http://www.netcash.co.za/netserv/ncUpload')
->Request_MerchantStatementResponse
->Request_MerchantStatementResult;
Проблема возникает, если вы просто распечатываете результат из simplexml_load_string и ничего не получаете.Поэтому не забудьте указать свое пространство имен.
РЕДАКТИРОВАТЬ
Я отвлекся вместо того, чтобы иметь
echo $xml->children('http://schemas.xmlsoap.org/soap/envelope/')
->children('http://www.netcash.co.za/netserv/ncUpload')
->Request_MerchantStatementResponse
->Request_MerchantStatementResult;
Я должен был иметь:
$result = $xml->children('http://schemas.xmlsoap.org/soap/envelope/')
->children('http://www.netcash.co.za/netserv/ncUpload')
->Request_MerchantStatementResponse;
echo $result->Request_MerchantStatementResult;