我有这个 XML:
<root>
<experiment accessCount="1" downloadCount="1">alfa</experiment>
<experiment accessCount="1" downloadCount="1">beta</experiment>
</root>
Run Code Online (Sandbox Code Playgroud)
我想检测是否存在值为 alfa 的节点实验。但是这段 PHP 代码正在向我返回所有值。
$this->xml = simplexml_load_file("data/stats.xml") or die("Error: Cannot create object");
$node = $this->xml->xpath("/root[experiment='alfa']");
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
你的 XPath,
/root[experiment='alfa']
Run Code Online (Sandbox Code Playgroud)
说:
选择
root
包含experiment
字符串值等于 的元素的元素'alfa'
。
您的示例中有一个这样的root
元素,并且它包含这两个 experimental
元素。
这个 XPath,
/root/experiment[.='alfa']
Run Code Online (Sandbox Code Playgroud)
说:
选择
experiment
字符串值等于 的元素'alfa'
。
并会选择您寻找的一个experiment
元素。
小智 0
您可以使用以下命令查询节点值text()
:
$node = $this->xml->xpath("/root/experiment[text()='alfa']");
Run Code Online (Sandbox Code Playgroud)