XPath前轴无法正常工作

时间:2018-09-11 22:40:55

标签: html xml xpath

我遇到了一个问题,这可能是一个理解上的问题,而不是一个问题,但是我想看看是否有人可以给我一些提示或暗示我做错了什么。

我有5个td元素。如下。

<td class="someTDClass1">
    <span class="aSPANClass">
        <div class="theDivClass">
        </div>
    </span>
</td>

<td class="someTDClass2">
    <span class="aSPANClass">
        <div class="theDivClass">
        </div>
    </span>
</td>

<td class="someTDClass1">
    <span class="aSPANClass">
        <div class="theDivClass">
        </div>
    </span>
</td>

<td class="someTDClass3">
    <span class="aSPANClass">
        <div class="theDivClass">
        </div>
    </span>
</td>

<td class="someTDClass2">
    <span class="aSPANClass">
        <div class="theDivClass">
        </div>
    </span>
</td>

现在我要做的是从每个元素的第一个td中获取类。 td类更改。但是span和div却没有。所以我写了一个前面的xpath,它在大多数情况下都起作用,但是它没有抓住最后一个元素。所以我只得到4个td元素。我知道,要使用GetAttribute()来获取类名,我现在就定位。有人知道为什么吗?为什么找不到最后一个元素?它具有所有相同的元素。

(//span/div[@class='theDivClass']/preceding::td)

1 个答案:

答案 0 :(得分:3)

您的XPath仅选择4个td元素而不是5个元素的原因是preceding::轴不包含任何祖先,因此您的最后一个td没有为其选择的div作为前一个元素存在。

更改

//span/div[@class='theDivClass']/preceding::td

//div[@class='theDivClass']/ancestor::td

,您将按预期选择所有5个td元素。