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;
War es hilfreich?

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

Objekte
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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top