XPath按值获取节点

时间:2015-11-21 19:08:04

标签: php xml xpath

我有这个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']");

我哪里错了?

3 个答案:

答案 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']");