用php处理xml响应

时间:2016-12-27 22:40:17

标签: php xml curl response

我使用下面的代码来获取xml数据。我不能以任何其他方式执行此操作,因为我将其用于我的iOS应用程序,并且我正在按照我的预期接收响应作为xml元素。当我在浏览器中运行它时,我只看到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处理并分别取出每个标签?

提前致谢

1 个答案:

答案 0 :(得分: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);