PHP简单XML解析
我需要货币兑换,欧元兑换美元。
欧洲中央银行在此提供利率:
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;
I need currency conversion, euro to dollar.
The European Central bank provides the rates here:
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
I can get the USD rate by using the first node, but what if they change the order?
Do I need something more reliable? I have no idea how..
$xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
echo "dollar: " . $xml->Cube->Cube->Cube[0]->attributes()->rate;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
只需使用 XPath 获取属性 @currency 等于“USD”的任何节点即可。
Just use XPath to get any node with the attribute @currency equal to "USD", that will do the trick.
他们在此页面提供示例代码:
只需单击选项卡对于开发人员
还有一个(未维护的)PEAR 汇率包
如果他们更改顺序,您不必担心。如果他们这样做,他们就会这样做。
They provide example code at this page:
Just click the tab For Developers
There is also an (unmaintained) PEAR Package for Exchange Rates
You should not bother if they change the order. If they do, they do.
您可以使用
foreach
迭代 simpleXML 对象You can iterate through simpleXML objects with a
foreach
你可以使用xpath
You can use xpath
你是对的。目前,您假设第 0 个条目为
USD
,如果将来订单发生变化,您的假设就会失败。因此,为了使您的应用程序独立于订单,您可以在循环中检查currency
属性。当您找到价值“USD”
的那一刻,您就可以获得其相应的rate
属性。You are right. Currently you are assuming the
0th
entry to beUSD
and if the order changes in the future your assumption fails. So to make your application independent of the order, you can check for thecurrency
attribute in a loop. The moment you find one with value"USD"
you can get its correspondingrate
attribute.