我有这个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']");
我哪里错了?
答案 0 :(得分:2)
您的XPath,
/root[experiment='alfa']
<强>表示:强>
选择包含
root
元素的experiment
元素,其字符串值等于'alfa'
。
您的示例中有一个此类root
元素,它包含 两个 experimental
元素。
此XPath,
/root/experiment[.='alfa']
<强>表示:强>
选择字符串值等于
experiment
的{{1}}元素。
并选择您要搜索的'alfa'
元素。
答案 1 :(得分:0)
请尝试使用此代码
/root/experiment[matches(.,'alfa')]
将完全正常工作
答案 2 :(得分:-1)
您可以使用text()
查询节点值:
$node = $this->xml->xpath("/root/experiment[text()='alfa']");