XPath基本查询

时间:2011-02-21 16:04:03

标签: php xml xpath

当我有一个小问题时,我只是想学习xpath。假设我有这个XML。

<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节点,基本上我不知道如何返回同一表达式中的节点。

2 个答案:

答案 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