首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SimpleXML中获取特定节点

如何从SimpleXML中获取特定节点
EN

Stack Overflow用户
提问于 2016-09-07 10:10:28
回答 2查看 25关注 0票数 0

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

我只想得到'vetel‘的价值,其中’银行‘是多国旅。

我的PHP如下:

代码语言:javascript
复制
<?php
$xml=simplexml_load_file("http://api.napiarfolyam.hu/?valuta=eur") or die("Error: Cannot create object");

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-07 10:30:44

这个应该是解决方案,但问题是,根据您的xml文件,银行多国旅没有vetel。所以迭代器不能看到银行多国旅。

代码语言:javascript
复制
$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; 
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-09-07 10:44:26

如前所述,在您提供的XML中没有这样的节点。只有一个<item>,其中<bank>等于"mnb“,如下所示,没有<vetel>标记。

代码语言:javascript
复制
<item>
  <bank>mnb</bank>
  <datum>2016-09-07 11:25:32</datum>
  <penznem>EUR</penznem>
  <kozep>309.3500</kozep>
</item>

但是,使用kozep标记作为示例,您可以很容易地使用SimpleXML的xpath()方法来找到匹配的值。

代码语言:javascript
复制
$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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39367015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档