2

我需要货币兑换,欧元兑换美元。
欧洲中央银行在此处提供利率:
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
我可以使用第一个节点获得美元汇率,但如果他们更改订单怎么办?
我需要更可靠的东西吗?我不知道怎么..

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

5 回答 5

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'];
于 2010-03-17T11:38:29.937 回答
2

他们在此页面上提供了示例代码:

只需单击“开发人员”选项卡

还有一个(未维护的)PEAR 汇率包

如果他们改变订单,你不应该打扰。如果他们这样做,他们就会这样做。

于 2010-03-17T11:30:46.713 回答
0

您可以使用一个遍历 simpleXML 对象foreach

foreach( $xml->Cube->Cube as $cube ) {
    if( isset( $cube->attributes()->rate ) ) {
         $rate = $cube->attributes()->rate; 
    }    
}
于 2010-03-17T11:29:33.170 回答
0

您可以使用 xpath

$rate = $xml->xpath("//Cube[currency='USD']/rate")
于 2010-03-17T11:39:04.287 回答
0

你说的对。当前,您假设0th输入是USD,如果将来订单发生变化,您的假设将失败。currency因此,为了使您的应用程序独立于顺序,您可以在循环中检查属性。一旦你找到一个有值的"USD",你就可以得到它对应的rate属性。

于 2010-03-17T11:59:17.280 回答