Frage
Ich brauche Währungsumrechnung, Euro-Dollar.
Die Europäische Zentralbank stellt die Preise hier:
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
Ich kann den USD-Kurs erhalten, indem Sie den ersten Knoten verwenden, aber was ist, wenn sie die Reihenfolge ändern?
Muss ich etwas zuverlässiger brauchen? Ich habe keine Ahnung, wie ..
$xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
echo "dollar: " . $xml->Cube->Cube->Cube[0]->attributes()->rate;
Lösung
Just Verwendung XPath zu bekommen jeden Knoten mit dem Attribut @currency gleich „USD“, das den Trick tun wird.
$xref = simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
$nodes = $xref->xpath('//*[@currency="USD"]');
echo $nodes[0]['rate'];
Andere Tipps
Sie bieten Beispielcode auf dieser Seite:
Sie einfach die Registerkarte klicken Sie auf Für Entwickler
Es gibt auch ein (nicht betreut) PEAR-Paket für Wechselkurse
Sie sollten nicht stören, wenn sie die Reihenfolge ändern. Wenn sie es tun, tun sie.
Sie können durchlaufen SimpleXML mit einem foreach
foreach( $xml->Cube->Cube as $cube ) {
if( isset( $cube->attributes()->rate ) ) {
$rate = $cube->attributes()->rate;
}
}
Sie können mit XPath
$rate = $xml->xpath("//Cube[currency='USD']/rate")
Sie haben Recht. Derzeit werden vorausgesetzt, Sie die 0th
Eintrag USD
und wenn die Reihenfolge ändert sich in der Zukunft Ihre Annahme nicht zu sein. So Ihre Anwendung unabhängig von der Reihenfolge zu machen, können Sie in einer Schleife für das currency
Attribut überprüfen. Sobald Sie ein mit dem Wert "USD"
finden Sie sein entsprechendes rate
Attribut erhalten können.