2

ユーロからドルへの通貨換算が必要です。
欧州中央銀行のレートは次のとおりです。
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
最初のノードを使用して USD レートを取得できますが、順序が変更された場合はどうなりますか?
もっと信頼できるものが必要ですか?方法がわかりません..

$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 を使用して、"USD" に等しい属性 @currency を持つ任意のノードを取得するだけで、うまくいきます。

$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

あなたが正しいです。現在、0thエントリが であると想定してUSDおり、将来的に順序が変更された場合、想定は失敗します。したがって、アプリケーションを順序に依存しないようにするためcurrencyに、ループ内で属性をチェックできます。値を持つものを見つけた瞬間"USD"に、対応するrate属性を取得できます。

于 2010-03-17T11:59:17.280 に答える
0

xpathを使用できます

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