PHP simpleXML解析

PHP simpleXML解析,php,simplexml,nodes,Php,Simplexml,Nodes,我需要货币兑换,欧元兑美元。 欧洲中央银行在此提供利率: 我可以使用第一个节点获取美元汇率,但是如果他们更改订单怎么办? 我需要更可靠的东西吗?我不知道如何 $xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); echo "dollar: " . $xml->Cube->Cube->Cube[0]->attributes()->rat

我需要货币兑换,欧元兑美元。
欧洲中央银行在此提供利率:

我可以使用第一个节点获取美元汇率,但是如果他们更改订单怎么办?
我需要更可靠的东西吗?我不知道如何

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

您可以使用
foreach

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

他们在本页提供了示例代码:

只需单击开发者的选项卡

还有一个(未维护)


如果他们改变了顺序,你就不必麻烦了。如果他们这样做了,他们就会这样做。

只要使用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'];
您可以使用xpath

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

你说得对。目前,您假设第0个
0
条目为
USD
,如果未来订单发生变化,您的假设将失败。因此,为了使应用程序独立于订单,可以在循环中检查
currency
属性。当您找到一个具有值
“USD”
的值时,您可以获得其相应的
rate
属性