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最初の 3 つの要素の要素が必要です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 に答える