选择特定列标题下的所有行(变量列标题)

时间:2016-09-19 14:04:02

标签: xpath

我有一张这样的表:

<table>
<tr class="header">
    <td>
        Col1
    </td>
    <td>
        Col2
    </td>
    <td>
        Col3
    </td>
    <td>
        Col4
    </td>
</tr>
<tr class="rowOdd">
    <td>
        Value1
    </td>
    <td>
        Value2
    </td>
    <td>
        Value3
    </td>
    <td>
        Value4
    </td>
</tr>
<tr class="rowEven">
    <td>
        Value1
    </td>
    <td>
        Value2
    </td>
    <td>
        Value3
    </td>
    <td>
        Value4
    </td>
</tr>
</table>

基本上,我想要做的是使用Xpath选择指定列标题下的所有行。列标题实际上是从“5XS”到“6XL”的衬衫尺寸。诀窍是每列的列数不同。一些有10列,有些有5或更少(即,可用的衬衫尺寸较少)。但标题名称是固定名称:item_name,5xs,4xs等。只是并非所有尺寸都始终存在于每张桌子中。因此,我必须编写一个xpath,以便搜索特定的标题名称(或衬衫大小)并获取该特定标题名称下的所有行。我尝试过这段代码,似乎有效:

*[count(../../tr/td[@class='header'][.='5xs']/preceding-sibling::*)+1]

但是,我的问题是如果我正在处理的表中没有标题'5xs',我将默认为column1(item_name)的值。如果我正在寻找的特定标题名称不存在于我正在查看的当前表中,是否有一种方法让我获得空白或根本不选择行?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用xpath函数包含。如果你有不同的类名和标记结构,即你有不同的类名:

<table>
<tr class="header_Name1">
    <td>
        Col1
    </td>
</tr>
<tr>
    <td>
        Value1
    </td>
</tr>
<tr class="header_Name2">
    <td>
        Col2
    </td>
</tr>
<tr>
    <td>
        Value1
    </td>
</tr>
</table>

以下内容:

//tr[contains(@class,'header_Name')]

应该返回:

["\nCol1\n\n", "\nCol2\n\n"]