0

我有这个 Xml 文件https://www.cba.am/_layouts/rssreader.aspx?rss=280F57B8-763C-4EE4-90E0-8136C13E47DA并且我想阅读相同的特定列,有在线货币汇率并想阅读只有 3 个,我怎么能用 php 做到这一点?我试试这个但没有结果

<?php
$file = "feed.xml";
$xml = simplexml_load_file($file);

foreach($xml -> item as $item){
    echo $item[0];
}
?>
4

1 回答 1

0

您想要title前三个元素中的item元素。这是Simplexml支持的Xpath的典型工作。这种Xpath 1.0表达式将满足您的需求:

//item[position() < 4]/title

一个代码示例是:

$titles = $xml->xpath('//item[position() < 4]/title');

foreach ($titles as $title)
{
    echo $title, "\n";
}

您的情况下的输出是(截至几分钟前):

USD - 1 - 405.8400
GBP - 1 - 657.4200
AUD - 1 - 389.5700

我想说在这里使用 Xpath 是最明智的,不需要外部库。

完整的代码示例,包括我快速完成的缓存和错误处理:

<?php
/**
 * Reading Xml File
 *
 * @link http://stackoverflow.com/q/19609309/367456
 */

$file = "feed.xml";

if (!file_exists($file))
{
    $url    = 'https://www.cba.am/_layouts/rssreader.aspx?rss=280F57B8-763C-4EE4-90E0-8136C13E47DA';
    $handle = fopen($url, 'r');
    file_put_contents($file, $handle);
    fclose($handle);
}

$xml = simplexml_load_file($file);

if (!$xml)
{
    throw new UnexpectedValueException('Failed to parse XML data');
}
$titles = $xml->xpath('//item[position() < 4]/title');

foreach ($titles as $title)
{
    echo $title, "\n";
}
于 2013-10-26T18:22:07.520 回答