首页 > 解决方案 > 如何在 PHP 中将 XML 转换为数组

问题描述

我是 SOAP API 的新手,我得到了 Web 服务的响应。但我无法将其转换为数组以获取密钥。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:setTransactionResponse xmlns:ns2="http://soap.api.controller.web.payjar.com/">
         <return>
            <merchantReference>mercRef_1395758213</merchantReference>
            <payUReference>17613281409117</payUReference>
            <successful>true</successful>
         </return>
      </ns2:setTransactionResponse>
   </soap:Body>
</soap:Envelope>

标签: phpxmlcurl

解决方案


尝试以下对数组的 xml 响应

 $xml = $response;
$xml = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $xml);
$xml = simplexml_load_string($xml);
$json = json_encode($xml);
$responseArray = json_decode($json,true);



echo "<pre>";print_r($responseArray);

输出

Array
(
    [soapBody] => Array
        (
            [ns2setTransactionResponse] => Array
                (
                    [return] => Array
                        (
                            [merchantReference] => mercRef_1395758213
                            [payUReference] => 17613281409117
                            [successful] => true
                        )

                )

        )

)

推荐阅读