我有这个 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)