2014-11-07 5 views
0

Прежде чем отмечать это как дубликат, обратите внимание, что я не смог найти ответ на свой конкретный случай.Доступ к отдельной собственности из объекта 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"]); 

ответ

1

Вы пробовали это сделать?

$resultObj->SubmitNewApplicationResponse->SubmitNewApplicationResult->Errors->ErrorDetails->ErrorDetail["Code"]; 
+0

Я попробовал это сейчас, похоже, не работает. – bg17aw

+0

Вы правы. Извините, я сделал ошибку, справляя и вставляя код: soap_Body ошибается, поэтому я правильно обновил свой ответ. Теперь это должно сработать. – mgaido

+0

Нет, не работает, зачем это работает, если вы вынимаете soap_Body? Я уже упоминал, что с помощью этой части мне удается отображать свойство Token. – bg17aw