0

PHPを使用してXMLファイルから「USD」、「GBP」、「EUR」の通貨を見つけて取得するにはどうすればよいですか?

私の XML ファイルは次のようになります。

<?xml version="1.0" encoding="ISO-8859-2"?>
<tabela_kursow typ="A" uid="13a033">
   <numer_tabeli>033/A/NBP/2013</numer_tabeli>
   <data_publikacji>2013-02-15</data_publikacji>
   <pozycja>
      <nazwa_waluty>bat (Tajlandia)</nazwa_waluty>
      <przelicznik>1</przelicznik>
      <kod_waluty>THB</kod_waluty>
      <kurs_sredni>0,1052</kurs_sredni>
   </pozycja>
   <pozycja>
      <nazwa_waluty>dolar amerykański</nazwa_waluty>
      <przelicznik>1</przelicznik>
      <kod_waluty>USD</kod_waluty>
      <kurs_sredni>3,1398</kurs_sredni>
   </pozycja>

ファイルはここから来ています:ポーランド国立銀行

ファイルをダウンロードしてサーバーに保存します。

$basedir = "/mypath/www/dirname";

$sxe = new SimpleXMLElement("http://www.nbp.pl/kursy/xml/LastA.xml", null, true);

file_put_contents($basedir."/subdirname/output.xml", $sxe->asXML());

ダウンロードした XML ファイルを使用して、USD、EUR、GBP<kurs_sredni>のみを取得する方法は?<kod_waluty>

4

2 に答える 2

1

このようなもので読むことができます。これは完全なコードではありません。ギャップを埋めてください。

$doc = new DOMDocument();
$doc->load( $pathFileName );

$pozycjas = $doc->getElementsByTagName( "pozycja" );

foreach($pozycjas as $eachPozycja)
{
  //readef fields
  $kod_waluty = $eachPozycja->getElementsByTagName( "kod_waluty " )->item(0)->nodeValue;

  if($kod_waluty is value u want)
       //read and store kurs_sredni
       $kurs_sredni= $eachPozycja->getElementsByTagName( "kurs_sredni" )->item(0)->nodeValue;
}
于 2013-02-15T21:28:02.560 に答える
0

これを行うには、すべての要素を繰り返し処理し、現在の要素が基準に一致するかどうかを確認してから、関心のあるデータを抽出します。

$sxe = new SimpleXMLElement("http://www.nbp.pl/kursy/xml/LastA.xml", null, true);

$accept = array_flip(explode(',', 'USD,EUR,GBP'));

foreach($sxe->pozycja as $pozycja)
{
    $currency = (string) $pozycja->kod_waluty;
    if (isset($accept[$currency])) {
        $accept[$currency] = (string) $pozycja->kurs_sredni;
    }
}

print_r($accept);

これはあなたに与えます:

Array
(
    [USD] => 3,1398
    [EUR] => 4,1852
    [GBP] => 4,8620
)

XML要素を削除してXMLを再度保存するだけの場合(質問で提案したように)、データをフィルタリングする必要はまったくありません。XMLをフィルタリングせずに保存するだけで、どんな種類の大きなファイルでもありません。

于 2013-02-15T23:10:22.973 に答える