我有这个XML:
<root>
<experiment accessCount="1" downloadCount="1">alfa</experiment>
<experiment accessCount="1" downloadCount="1">beta</experiment>
</root>
我想检测值为alfa的节点实验是否存在。但这段PHP代码正在向我返回所有值。
$this->xml = simplexml_load_file("data/stats.xml") or die("Error: Cannot create object");
$node = $this->xml->xpath("/root[experiment='alfa']");
我哪里错了?
您的XPath,
/root[experiment='alfa']
表示:
选择包含字符串值等于
'alfa'
的experiment
元素的root
元素
在您的示例中有一个这样的root
元素,它包含两个experimental
元素。
此XPath,
/root/experiment[.='alfa']
表示:
选择字符串值等于
'alfa'
的experiment
元素
并将选择您要查找的一个experiment
元素。
可以使用text()
:查询节点值
$node = $this->xml->xpath("/root/experiment[text()='alfa']");
请尝试此代码
/root/experiment[matches(.,'alfa')]
将绝对工作