如何从SimpleXML获取特定节点

时间:2016-09-07 10:10:29

标签: php simplexml

我的XML如下:http://api.napiarfolyam.hu/?valuta=eur

我想只获得'银行'是mnb的'vetel'值。

我的PHP如下:

<?php
$xml=simplexml_load_file("http://api.napiarfolyam.hu/?valuta=eur") or die("Error: Cannot create object");

$vetel = (string) $xml->valuta->bank->vetel;
?>

2 个答案:

答案 0 :(得分:0)

这个应该是解决方案,但问题是,根据你的xml文件,bank mnb没有vet​​el。因此,迭代器无法看到bank mnb。

$xml=simplexml_load_file("http://api.napiarfolyam.hu/?valuta=eur") or die("Error: Cannot create object");

foreach($xml->valuta->item as $item){
    if($item->bank == "mnb"){
      echo $item->vetel;
      break; 
    }
}

答案 1 :(得分:0)

如前所述,您提供的XML中没有此类节点。唯一的<item> <bank>等于&#34; mnb&#34;如下所示,没有<vetel>标记。

<item>
  <bank>mnb</bank>
  <datum>2016-09-07 11:25:32</datum>
  <penznem>EUR</penznem>
  <kozep>309.3500</kozep>
</item>

使用kozep标记作为示例,您可以轻松使用SimpleXML的xpath()方法来查找匹配值,例如

$xml = file_get_contents('http://api.napiarfolyam.hu/?valuta=eur');
$sxml = simplexml_load_string($xml);

echo (float) $sxml->xpath('/arfolyamok/deviza/item[bank = "mnb"]/kozep/text()')[0];

// 309.35