通过它的父母的另一个孩子获得孩子

时间:2016-01-17 18:25:52

标签: html xpath

我的HTML看起来像这样:

<div class="parent">
    <div class="url">
        <a href="http://url.com/view/12">LINK</a>
    </div>

    <div class="stats">
        <div class="a">12</div>
        <div class="b">14</div>
    </div>
</div>
<div class="parent">
    <div class="url">
        <a href="http://url.com/view/364">LINK</a>
    </div>

    <div class="stats">
        <div class="a">133</div>
        <div class="b">13</div>
    </div>
</div>
<div class="parent">
    <div class="url">
        <a href="http://url.com/view/24324">LINK</a>
    </div>

    <div class="stats">
        <div class="a">4</div>
        <div class="b">46</div>
    </div>
</div>

这是否可以让父母的孩子找到另一个孩子,同一个父母的孩子?

所以,我想得到第二个父母的b课的内容。但我想找到它的href参数。

喜欢那样 -

  • XPath查找父级,其中包含子级urlahref参数http://url.com/view/364
  • XPath在同一父
  • 中获取类b的内容

如果您不明白,我基本上需要XPath获取数字13b的内容),但使用href参数找到它。

这可能吗?如何做到这一点?

3 个答案:

答案 0 :(得分:2)

更清晰的方法是(仅为了可读性而换行)

//div[@class = 'parent' and div[@class = 'url']
/a/@href = 'http://url.com/view/364']/div[@class = 'stats']/div[@class = 'b']

这比你自己找到的答案要好(实际上,你自己找到答案是件好事!)因为没有不必要的父轴(..)步骤。

优于

(//a[@href='http://url.com/view/364']/following::div[@class='b'])[1]

因为following::div[@class = 'b']选择了跟在上下文项之后的div元素,即使它位于另一个div[@class = 'parent']中。例如,如果文档看起来像

<html>
<div class="parent">
    <div class="url">
        <a href="http://url.com/view/364">LINK</a>
    </div>

    <div class="stats">
        <div class="a">133</div>
    </div>
</div>
<div class="parent">
    <div class="url">
        <a href="http://url.com/view/24324">LINK</a>
    </div>

    <div class="stats">
        <div class="a">4</div>
        <div class="b">46</div>
    </div>
</div>
</html>

然后结果将是

<div class="b">46</div>

答案 1 :(得分:0)

我找到了答案。

这很容易做到 -

//*[@class="parent"]/div[@class="url"]/a[@href="http://url.com/view/364"]/../../div[@class="stats"]/div[@class="b"]

答案 2 :(得分:0)

嗯,更简洁的做法是使用following轴,然后用class='b'选择第一个节点。

"(//a[@href='http://url.com/view/364']/following::div[@class='b'])[1]"