2010-04-30 3 views
1

Я пытаюсь проверить поле в каком-либо XML, который возвращается извне. XML возвращается в переменном вызове $out и при просмотре исходного кода страницы вы получаете выход XML из следующих действий,Чтение XML с PHP

<?xml version="1.0" encoding="UTF-8"?> 
<ResponseBlock Live="FALSE" Version="3.51"> 
    <Response Type="AUTH"> 
    <OperationResponse> 
     <TransactionReference>23-9-1334895</TransactionReference> 
     <TransactionCompletedTimestamp>2010-04-30 15:59:05</TransactionCompletedTimestamp> 
     <AuthCode>AUTH CODE:TEST</AuthCode> 

     <TransactionVerifier>AlaUOS1MOnN/iwc5s2WPDm5ggrCLwesUnHs9h+W0N3CRaln2W6lh+6dtaRFFhLdwfnw6y7lRemyJUYl9a3dpWfzORE6DaZkFMb+dIb0Ne1UxjFEJkrEtjzx/i8KSayrIBrT/yGZOoOT42EZ9loc+UkdGk/pqYvj8bZztvgBNo2Ak=</TransactionVerifier> 
     <Result>1</Result> 
     <SettleStatus>0</SettleStatus> 
     <SecurityResponseSecurityCode>1</SecurityResponseSecurityCode> 
     <SecurityResponsePostCode>1</SecurityResponsePostCode> 
     <SecurityResponseAddress>1</SecurityResponseAddress> 

    </OperationResponse> 
    <Order> 
     <OrderInformation>This is a test order</OrderInformation> 
     <OrderReference>Order0001</OrderReference> 
    </Order> 
    </Response> 
</ResponseBlock> 

Я хочу проверить, что значение в поле «Результат». Я не уверен, как получить доступ к информации с помощью PHP, до сих пор у меня есть,

$xml = simplexml_load_string($out); 

Большое спасибо

ответ

3

Использование этого должно быть достаточно просто:

echo $xml->Response->OperationResponse->Result; 

Здесь отображается:

1 


SimpleXML загрузить данные XML в структуру из массивов и объектов - что облегчает доступ.

Чтобы знать, что эта структура выглядит, вы можете использовать:

var_dump($xml); 


Что даст вам, здесь:

object(SimpleXMLElement)[1] 
    public '@attributes' => 
    array 
     'Live' => string 'FALSE' (length=5) 
     'Version' => string '3.51' (length=4) 
    public 'Response' => 
    object(SimpleXMLElement)[2] 
     public '@attributes' => 
     array 
      'Type' => string 'AUTH' (length=4) 
     public 'OperationResponse' => 
     object(SimpleXMLElement)[3] 
      public 'TransactionReference' => string '23-9-1334895' (length=12) 
      public 'TransactionCompletedTimestamp' => string '2010-04-30 15:59:05' (length=19) 
      public 'AuthCode' => string 'AUTH CODE:TEST' (length=14) 
      public 'TransactionVerifier' => string 'AlaUOS1MOnN/iwc5s2WPDm5ggrCLwesUnHs9h+W0N3CRaln2W6lh+6dtaRFFhLdwfnw6y7lRemyJUYl9a3dpWfzORE6DaZkFMb+dIb0Ne1UxjFEJkrEtjzx/i8KSayrIBrT/yGZOoOT42EZ9loc+UkdGk/pqYvj8bZztvgBNo2Ak=' (length=173) 
      public 'Result' => string '1' (length=1) 
      public 'SettleStatus' => string '0' (length=1) 
      public 'SecurityResponseSecurityCode' => string '1' (length=1) 
      public 'SecurityResponsePostCode' => string '1' (length=1) 
      public 'SecurityResponseAddress' => string '1' (length=1) 
     public 'Order' => 
     object(SimpleXMLElement)[4] 
      public 'OrderInformation' => string 'This is a test order' (length=20) 
      public 'OrderReference' => string 'Order0001' (length=9) 


Зная эту структуру, достигая элемента, что интересы вам должно быть довольно легко ;-)