2010-03-17 107 views
2

我需要貨幣換算,歐元兌美元。
歐洲央行提供的利率在這裏:
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
我可以使用的第一個節點獲得的美元匯率,但如果他們改變什麼順序?
我需要更可靠的東西嗎?我不知道如何..PHP simpleXML解析

$xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); 
echo "dollar: " . $xml->Cube->Cube->Cube[0]->attributes()->rate; 

回答

6

只需使用XPath獲取任何具有@currency屬性等於「USD」的節點,就可以實現這一點。

$xref = simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); 
$nodes = $xref->xpath('//*[@currency="USD"]'); 

echo $nodes[0]['rate']; 
0

您可以通過迭代的SimpleXML用foreach

foreach($xml->Cube->Cube as $cube) { 
    if(isset($cube->attributes()->rate)) { 
     $rate = $cube->attributes()->rate; 
    }  
} 
0

您可以使用XPath

$rate = $xml->xpath("//Cube[currency='USD']/rate") 
0

你是對的。目前,您假設0th條目爲USD,如果訂單在將來發生變化,則您的假設失敗。因此,爲了使您的應用程序獨立於訂單,您可以在循環中檢查currency屬性。當您找到值爲"USD"的那一刻時,您可以獲得其相應的rate屬性。