<inventory>
<drink>
<lemonade supplier="mother" id="1">
<price>$2.50</price>
<amount>20</amount>
</lemonade>
<pop supplier="store" id="2">
<price>$1.50</price>
<amount>10</amount>
</pop>
</drink>
</inventory>
$result = new SimpleXMLElement($string);
$res = $result->xpath("/inventory/drink/lemonade[@supplier='mother' and amount > 2]");
正如您可以看到上面的查询检查lemonade节点中的供应商和数量,我如何检查同一表达式中的pop节点,基本上我不知道如何返回同一表达式中的节点。
答案 0 :(得分:1)
最简单的方法是使用../pop
转到pop节点:
/inventory/drink/lemonade[@supplier='mother' and amount > 2]/../pop
可替换地:
/inventory/drink[lemonade[@supplier='mother' and amount > 2]]/pop
答案 1 :(得分:1)
您还没有说的是您希望XPath表达式返回的内容。它是饮料,供应商还是价格?
假设您要退回价格。那么价格的基本路径是
/inventory/drink/pop/price
然后,您可以向此路径中的任何步骤添加条件(过滤谓词)
/inventory/drink[lemonade/@supplier='mother']/pop[@supplier='store']/price