2014-03-01 75 views
0

我已經在這裏搜索和網絡的其餘部分,我無法找到任何與此幫助。PHP和XML屬性

我從curl_exec的響應。響應是一個名爲$ output的XML字符串。

echo '<pre>' . htmlentities($output) . '</pre>'; 

給出:

<?xml version="1.0" encoding="utf-8"?> 
<RESPONSE> 
    <FIELDS> 
    <FIELD KEY="status">1</FIELD> 
    <FIELD KEY="auth_code">DEMO43</FIELD> 
    <FIELD KEY="auth_response">APPROVED</FIELD> 
    <FIELD KEY="avs_code">X</FIELD> 
    <FIELD KEY="cvv2_code"> </FIELD> 
    <FIELD KEY="order_id">12345678900015</FIELD> 
    <FIELD KEY="reference_number">47210</FIELD> 
    <FIELD KEY="error" /> 
    <FIELD KEY="available_balance" /> 
    <FIELD KEY="is_partial">0</FIELD> 
    <FIELD KEY="partial_amount">0</FIELD> 
    <FIELD KEY="partial_id" /> 
    <FIELD KEY="original_full_amount" /> 
    <FIELD KEY="outstanding_balance">0</FIELD> 
    </FIELDS> 
</RESPONSE> 

我需要拔出特定的信息,例如,用 「AUTH_CODE」 相關聯的值(即:DEMO43)。

多小時無覓之後,我需要幫助。如何獲得這些數據轉化爲關聯數組,如:

$array = ('status'=>'1','auth_code'=>'DEMO43' ... etc) ? 
+0

使用'simplexml_load_string()'。 – CodeAngry

回答

1

試試這個

$string = '<?xml version="1.0" encoding="utf-8"?> 
<RESPONSE> 
    <FIELDS> 
    <FIELD KEY="status">1</FIELD> 
    <FIELD KEY="auth_code">DEMO43</FIELD> 
    <FIELD KEY="auth_response">APPROVED</FIELD> 
    <FIELD KEY="avs_code">X</FIELD> 
    <FIELD KEY="cvv2_code"> </FIELD> 
    <FIELD KEY="order_id">12345678900015</FIELD> 
    <FIELD KEY="reference_number">47210</FIELD> 
    <FIELD KEY="error" /> 
    <FIELD KEY="available_balance" /> 
    <FIELD KEY="is_partial">0</FIELD> 
    <FIELD KEY="partial_amount">0</FIELD> 
    <FIELD KEY="partial_id" /> 
    <FIELD KEY="original_full_amount" /> 
    <FIELD KEY="outstanding_balance">0</FIELD> 
    </FIELDS> 
</RESPONSE>'; 


$ARR_OUTPUT = array(); 

$dom = new DOMDocument(); 
$dom->loadXML($string); 
$searchNode = $dom->getElementsByTagName("FIELD"); 
foreach($searchNode as $searchNode) 
{ 
    $key = $searchNode->getAttribute('KEY'); 
    $value = $searchNode->nodeValue; 
    $ARR_OUTPUT[$key]=$value; 
} 
echo "<pre>"; 
print_r($ARR_OUTPUT); 

OUTPUT:

Array 
(
    [status] => 1 
    [auth_code] => DEMO43 
    [auth_response] => APPROVED 
    [avs_code] => X 
    [cvv2_code] => 
    [order_id] => 12345678900015 
    [reference_number] => 47210 
    [error] => 
    [available_balance] => 
    [is_partial] => 0 
    [partial_amount] => 0 
    [partial_id] => 
    [original_full_amount] => 
    [outstanding_balance] => 0 
) 
+0

太棒了!這解決了這個問題。感謝您的及時響應!這非常合理。我不知道爲什麼我找不到任何可行的東西。 – Lindylead