检查是不是存在节点并检查其属性值
Posted
技术标签:
【中文标题】检查是不是存在节点并检查其属性值【英文标题】:Check is a node exist and check it's attribute value检查是否存在节点并检查其属性值 【发布时间】:2019-04-11 07:37:00 【问题描述】:我有一个带有节点和属性的 xml 文件
<hotspot name="hs1"/>
<hotspot name="hs2"/>
<hotspot name="hs3"/>
我想检查 nodc 热点是否存在以及是否存在特定的属性值。 我正在尝试这个,但 id 不起作用...
<?php
$file = 'hotspots.xml';
$xml = simplexml_load_file($file);
$var = $xml->xpath("//hotspot[@name='hs2']");
if (isset($var)) echo 'does exist' else echo 'does not exist'
?>
好吧,它根本不起作用(错误 500) 很抱歉成为这样的新手,非常感谢您的帮助!谢谢 !
【问题讨论】:
这不是 XML 文件。另请参阅此问题的答案:***.com/q/845021/1255289 它是我的 xml 文件的一部分 ;) @jeromebg 我的回答对你有用吗? 【参考方案1】:您的 echo 语句应以 ;
结尾
$file = 'hotspots.xml';
$xml = simplexml_load_file($file);
$var = $xml->xpath("//hotspot[@name='hs2']");
if (isset($var))
echo 'does exist';
else
echo 'does not exist';
除此之外,$xml->xpath
的返回类型是一个数组,当 xpath 表达式没有找到结果时,它会返回一个空数组。
当它返回一个空数组时,isset($var)
将是 true,并且会给你 does exist
,这是不正确的。
一种选择是使用count 来检查数组是否包含超过0 个项目:
if (count($var) > 0)
【讨论】:
以上是关于检查是不是存在节点并检查其属性值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flutter/Dart 检查 Firebase 数据库中是不是存在节点
如何检查XML文件是否存在节点并在Progress4GL中检索值