如何从 SimpleXML 获取特定节点
How can I get a particular node from SimpleXML
我的XML如下:http://api.napiarfolyam.hu/?valuta=eur
我只想获得 'vetel' 值,其中 'bank' 是 mnb。
我的PHP如下:
<?php
$xml=simplexml_load_file("http://api.napiarfolyam.hu/?valuta=eur") or die("Error: Cannot create object");
$vetel = (string) $xml->valuta->bank->vetel;
?>
这个应该是解决方案,但问题是,根据您的 xml 文件,bank mnb 没有 vetel。所以迭代器看不到 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;
}
}
如前所述,您提供的 XML 中没有这样的节点。 <bank>
等于 "mnb" 的唯一 <item>
如下所示,没有 <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
我的XML如下:http://api.napiarfolyam.hu/?valuta=eur
我只想获得 'vetel' 值,其中 'bank' 是 mnb。
我的PHP如下:
<?php
$xml=simplexml_load_file("http://api.napiarfolyam.hu/?valuta=eur") or die("Error: Cannot create object");
$vetel = (string) $xml->valuta->bank->vetel;
?>
这个应该是解决方案,但问题是,根据您的 xml 文件,bank mnb 没有 vetel。所以迭代器看不到 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;
}
}
如前所述,您提供的 XML 中没有这样的节点。 <bank>
等于 "mnb" 的唯一 <item>
如下所示,没有 <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