Прежде чем отмечать это как дубликат, обратите внимание, что я не смог найти ответ на свой конкретный случай.Доступ к отдельной собственности из объекта SimpleXMLElement
У меня есть ответ SOAP XML, что я храню в объекте с помощью:
$ resultObj = simplexml_load_string ($ XML);
если я print_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
Однако, я не знаю, как получить доступ к коду и свойства сообщений. Что это за «@attributes»?
EDIT: кажется, что у меня была ошибка в моем коде, а @attributes следует игнорировать в объектах SimpleXML. Это работает, как указано @ mark91:
print_r((string) $resultObj->soap_Body->SubmitNewApplicationShortResponse->SubmitNewApplicationShortResult->Errors->ErrorDetails->ErrorDetail["Code"]);
Я попробовал это сейчас, похоже, не работает. – bg17aw
Вы правы. Извините, я сделал ошибку, справляя и вставляя код: soap_Body ошибается, поэтому я правильно обновил свой ответ. Теперь это должно сработать. – mgaido
Нет, не работает, зачем это работает, если вы вынимаете soap_Body? Я уже упоминал, что с помощью этой части мне удается отображать свойство Token. – bg17aw