如何使用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>
文件来自此处:Polish National Bank
我下载文件并将其保存在我的服务器上:
$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文件如何仅<kurs_sredni>
=美元,欧元,英镑 <kod_waluty>
?
答案 0 :(得分: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;
}
答案 1 :(得分: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,它不是任何类型的大文件。