如何找到所有div元素中的文本而没有第一个div来自类" B"

时间:2016-01-18 21:47:19

标签: html xml xpath

我试图捕获所有div元素中的文本,而没有第一个div的文本,即第34个B"

我整天都在敲我的头,但我似乎无法让它正常工作。

<div class="A">
    Text 1
</div>
<div class="B">
    <div>
        Welcome 1
    </div>
    <div>
        Welcome 2
    </div>
</div>

这是我使用的表达方式:

//body//text()[not (//div[@class='B']/div[1])]

但它没有返回任何结果。

1 个答案:

答案 0 :(得分:1)

通过为其提供单个根元素,使XML格式良好,

<div>
  <div class="A">
    Text 1
  </div>
  <div class="B">
    <div>
        Welcome 1
    </div>
    <div>
        Welcome 2
    </div>
  </div>
</div>

以下是没有div后代的所有div元素,并且不是第一个div元素,其中父级具有@class属性值“B&#39;:

//div[not(descendant::div) and not(../@class='B' and position() = 1)]

以上XPath选择了这两个div元素:

<div class="A">
    Text 1
  </div>

<div>
        Welcome 2
    </div>

因此,您可以使用此XPath获取关联的text()节点:

//div[not(descendant::div) and not(../@class='B' and position() = 1)]/text()

...将选择:

Text 1


    Welcome 2

未按要求选择Welcome 1