如何在XPath中使用AND运算符?

时间:2016-07-05 15:37:19

标签: php xml xpath

XML就像

 <a id="1">
   <b>value1</b>
   <b>value2</b>
 </a>

我想编写XPath来查找<a>的ID,其中有两个<b>个子节点具有固定值value1value2。我试图找出像

这样的条件的XPath
$xml->xpath('*[b=value1] | *[b=value2]');  
value1节点中存在

value2<b>,但我无法完全按照我第一次使用XPath的方式进行操作。

2 个答案:

答案 0 :(得分:6)

以下XPath,

//a[b = 'value1' and b = 'value2']/@id

将选择所有id元素的a个属性,其子元素b元素的字符串值等于value1 AND 另一个子b 1}}具有所请求的字符串值等于value2的元素。

答案 1 :(得分:-3)

contains功能可以做到。

$nodes = $xpath->query("//b[contains(., 'value1')] | //b[contains(., 'value2')]");

然后,获取父ID

$parent_id = $nodes->item(0)->parentNode->getAttribute("id");

演示(使用HTML)here