2016-12-27 88 views
-1

我正在使用下面的代碼來獲取xml數據。我無法以任何其他方式做它,因爲我將它用於我的iOS應用程序,並且我正如我預期的那樣將該響應作爲xml元素接收。當我在瀏覽器中運行它時,我只看到xml節點的值。使用php處理XML響應

例如,這是我的xml:

<Message version="1.0" messageId="12"> 
<SaleResponse> 
<OrderId>1234</OrderId> 
<OrderAmount>1.0</OrderAmount> 
</SaleResponse> 
</Message> 

這正是輸出我在iOS應用程序,但在我的瀏覽器中得到,我得到這樣的:

12341.0

這是我的php代碼:

<?php 

     $url = 'https://something.com'; 

      $ch = curl_init($url); 

      $inp = $_REQUEST["xmlpost"]; 

      curl_setopt($ch, CURLOPT_POST, 1); 

      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
           'Content-type: application/xml', 
           'TX_URL: something.com', 
           'TX_TokenExID: something', 
           'TX_APIKey: something')); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $inp); 

      $result = curl_exec($ch); 

      echo $result; 
    ?> 

那麼,我該如何處理result作爲XML並分別取每個標籤?

在此先感謝

+0

http://php.net/manual/en/refs.xml.php –

+0

我建議刪除避免downvotes的問題 –

+0

@AlexBlex我在這個網站上搜索了幾個小時,但唯一我能得到的是一個準備好的xml,具體的開始和結束,如果你能告訴我更具體的東西,我會很高興 –

回答

1

運行通過PHP函數simplexml_load_string您的字符串:

$result = simplexml_load_string($result); 
echo $result->SaleResponse->OrderId 


<?php 
//or in an actual example 

$string = '<Message version="1.0" messageId="12"> 
<SaleResponse> 
<OrderId>1234</OrderId> 
<OrderAmount>1.0</OrderAmount> 
</SaleResponse> 
</Message>'; 
$obj= simplexml_load_string($string); 
echo '<pre>'; 
print_r($obj); 
+0

感謝您的回答,但是在我測試之前,我沒有看到格式它所需要的xml必須像這樣開始<<< XML並像這樣完成xml; –

+0

<<< XML是heredoc語法。你不需要這樣做,因爲你的字符串是通過CURL調用進入的。看看我上面的例子。 –

+0

好吧,我發現我錯過了什麼,我的xml開始與vpos標記(這種方式我也把它給我的ios應用程序),但是當我用print_r打印結果時,我看到它沒有采取第一個標記(vpos)謝謝尋求幫助 –