如何解析xml响应并使用PHP中的CURL分配给变量

时间:2016-03-13 08:41:15

标签: php xml curl

我在浏览器中点击了一个URL / API并从服务器获得了低于xml的响应。

<test xmlns:taxInfoDto="com.message.TaxInformationDto">
<response>
 <code>0000</code>
 <description>SUCCESS</description>
</response>
<accounts>
 <account currency="BDT" accAlias="6553720">
 <currentBalance>856.13</currentBalance>
 <availableBalance>856.13</availableBalance>
 </account>
</accounts>
<transaction>
 <principalAmount>0</principalAmount>
 <feeAmount>0.00</feeAmount>
 <transactionRef>2570277672</transactionRef>
 <externalRef/>
 <dateTime>09/03/2016</dateTime>
 <userName>01823074838</userName>
 <taxInformation totalAmount="0.00"/>
 <additionalData/>
 </transaction>
</test>

现在我想解析这个xml响应并将其分配给一个变量,这样我就可以在任何地方使用这个变量值。我使用下面的PHP代码。

<?php
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://x.x.x.x:/ussd/process?     destination=BANGLA&userName=&secondarySource=01");
curl_setopt($ch, CURLOPT_HEADER, 0);
$retValue = curl_exec($ch);
return $retValue;
?>

我的产量低于产量。

0000SUCCESS856.13 856.13 00.00257027770913/03/201601823074838

任何人都可以帮助我如何解析每个值并将其分配给变量。

1 个答案:

答案 0 :(得分:1)

可能的解决方案是添加CURLOPT_RETURNTRANSFER选项:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

从手册:

  

TRUE以将返回值作为字符串返回   curl_exec()而不是直接输出。

您可以使用例如simplexml_load_string来加载返回的字符串并访问其属性:

<?php
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://x.x.x.x:/ussd/process?     destination=BANGLA&userName=&secondarySource=01");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$retValue = curl_exec($ch);

$simpleXMLElement = simplexml_load_string($retValue);
$description = (string)$simpleXMLElement->response->description;
$username = (string)$simpleXMLElement->transaction->userName;
// etc ..