Ответ SOAP — парсинг xml в php, как получить доступ?

У меня есть ответ от веб-службы:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:H1 xsi:type="ns1:H1">
<BOGUS>
<time>1411967345</time>
<status>1</status>
<speed>0</speed>
</BOGUS>
<BOGUS>
<time>1411964888</time>
<status>10</status>
<speed>0</speed>
</BOGUS>
</ns1:H1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Как я могу получить доступ к элементу время или же статус в BOGUS[0] или же BOGUS[1]?
Я попробовал это:

  $soap     = simplexml_load_string($str);
$response = $soap->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://tempuri.org/')->H1;
$time = $response->BOGUS[1]->time;
echo $time;

, но это не работает Возвраты: Примечание: попытка получить свойство не-объекта

tempuri.org прав. Я вставил xml ответ на: xmlgrid.net и получил правильное дерево.

0

Решение

Я бы рекомендовал использовать Zend Soap Client для PHP. Там вы можете сделать так:

$client = new Zend_Soap_Client("MyService.wsdl");
$result = $client->yourMethod(<YouParameters ...>);
echo $result->H1->BOGUS[1]->time;

Увидеть:
http://framework.zend.com/manual/1.12/de/zend.soap.client.html

0

Другие решения

Вы можете сделать это с помощью циклов, так как вы получаете массив в ответ

foreach ($response as $res)
{

$time = $res->BOGUS[1]->time;
echo $time;

}
0

По вопросам рекламы [email protected]