2015-08-06 2 views
1

Я пытаюсь проанализировать ответ xml, возвращаемый URL. Я могу успешно просмотреть ответ, но когда я пытаюсь получить конкретное значение из xml, я ничего не получаю. Вот мой PHP-код.не может получить доступ к значениям при разборе xml php

$responseMessage = file_get_contents($myurl); 
$xml = simplexml_load_string($responseMessage, 'SimpleXMLElement', LIBXML_NOCDATA); 
print_r($xml) 

Вот фактический ответ XML

<PPResponse Result="000" Key="99fd1c21-b07d-41f5-bbf8-1917f53c3152"> 

    <ResultMessage> 
     Operation is succesfully completed 
    </ResultMessage> 

    <UtilityInfo> 
      <UtilityCode>78</UtilityCode> 
    </UtilityInfo> 


     <BillInfo> 
      <Bill> 
       <BillNumber>99fd1c21-b07d-41f5-bbf8-1917f53c3152</BillNumber> 
       <DueDate>2015-08-06T11:23:49</DueDate> 
       <Amount>0</Amount> 
       <ReserveInfo>Some info</ReserveInfo> 

       <BillParam> 
        <mask>3</mask> 
        <commission type="0" val="0.00" op="-" paysource="1" /> 
       </BillParam> 

       <RefStan>7676422901773</RefStan> 
      </Bill> 

     </BillInfo> 

</PPResponse> 

Теперь я хочу, чтобы сохранить значение только BillNumber и RefStan значение в некоторой переменной, так что я могу использовать его позже. Как я могу это сделать?

ответ

1

Вы хотите получить атрибут val от commission? Попробуйте что-то вроде этого:

$value = (string)$xml->BillInfo->Bill->BillParam->commission->attributes()->val; 
+0

Он говорит: «Попытка получить имущество не-объект» – Sid

+0

Я проверил этот код с точным данным, которые Вы отправляли сообщение, и она работает. Поэтому вы должны тестировать его на некоторых данных с разной структурой. –

+0

Что это означает (строка)? – Sid

0

Попробуйте

$str = <<<XML 
<PPResponse Result="000" Key="99fd1c21-b07d-41f5-bbf8-1917f53c3152"> 

    <ResultMessage> 
     Operation is succesfully completed 
    </ResultMessage> 

    <UtilityInfo> 
      <UtilityCode>78</UtilityCode> 
    </UtilityInfo> 


     <BillInfo> 
      <Bill> 
       <BillNumber>99fd1c21-b07d-41f5-bbf8-1917f53c3152</BillNumber> 
       <DueDate>2015-08-06T11:23:49</DueDate> 
       <Amount>0</Amount> 
       <ReserveInfo>Some info</ReserveInfo> 

       <BillParam> 
        <mask>3</mask> 
        <commission type="0" val="0.00" op="-" paysource="1" /> 
       </BillParam> 

       <RefStan>7676422901773</RefStan> 
      </Bill> 

     </BillInfo> 

</PPResponse> 
XML; 

$xml = new SimpleXMLElement($str); 
echo $xml->ResultMessage; 
echo $xml->BillInfo->Bill->ReserveInfo; 

Примечание Пожалуйста, замените $str с $responseMessage.