php xpath只有具有类“a1”的子项时才选择带有“A”类的div

时间:2010-11-11 05:45:24

标签: php xpath

鉴于以下html片段,我怎样才能选择所有包含ac的div,只要他们有一个带有a1的子div

现在我有了以下xpath查询:

//div[@id='z']/div[@class='a' or @class='c']

<div id="z">
    <div class="a"><!-- Should be  selected -->
        <div class="a1"></div>
    </div>
    <div class="a">
        <div></div>
    </div>
    <div class="b">
        <div></div>
    </div>
    <div class="a"><!-- Should be  selected -->
        <div class="a1"></div>
    </div>
    <div class="c"><!-- Should be  selected -->
        <div class="a1"></div>
    </div>
</div>

2 个答案:

答案 0 :(得分:4)

使用

//div[(@class='a' or @class='c') and div[@class='a1']]

在知道XML结构时,始终避免使用////通常非常低效,因为它会导致遍历完整子树,其顶层元素是上下文节点。

答案 1 :(得分:3)

/div[@id='z']/div[@class='a' or @class='c'][div[@class='a1']]

live link