Прежде чем отмечать это как дубликат, обратите внимание, что я не смог найти ответ на мой конкретный случай.
У меня есть XML-ответ SOAP, который я храню в объекте, используя:
$ resultObj = SimpleXML_Load_String ($ xml);
если я печатаю_r объект, я получаю:
SimpleXMLElement Object
(
[soap_Body] => SimpleXMLElement Object
(
[SubmitNewApplicationShortResponse] => SimpleXMLElement Object
(
[SubmitNewApplicationShortResult] => SimpleXMLElement Object
(
[Errors] => SimpleXMLElement Object
(
[@attributes] => Array
(
[IsError] => true
)
[ErrorDetails] => SimpleXMLElement Object
(
[ErrorDetail] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Code] => 209
[Message] => Client Reference already exists.
)
)
)
)
[Token] => 00000000-0000-0000-0000-000000000000
[ProposalID] => 0
)
)
)
)
Я могу получить доступ к токену, используя:
$token = (string)$resultObj->soap_Body->SubmitNewApplicationShortResponse->SubmitNewApplicationShortResult->Token
Однако я не знаю, как получить доступ к свойствам кода и сообщения. Что это за "@атрибуты"?
EDIT: кажется, у меня была ошибка в моем коде, и @attributes следует игнорировать в объектах SimpleXML. Это работает, как указано @mark91:
print_r( (string) $resultObj->soap_Body->SubmitNewApplicationShortResponse->SubmitNewApplicationShortResult->Errors->ErrorDetails->ErrorDetail["Code"] );
Вы пытались это сделать?
$resultObj->SubmitNewApplicationResponse->SubmitNewApplicationResult->Errors->ErrorDetails->ErrorDetail["Code"];