2016-09-19 38 views
0

我有这样的一个表:选择特定的列标题下的所有行(可变列标题)

<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”是不存在的,我当前正在处理的表,我得到默认为列1的值(ITEM_NAME )。如果我正在查找的特定标题名称不存在于我正在查看的当前表格中,是否有办法让空白或根本不选择行?

谢谢!

回答

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"] 
+0

这是一个辉煌的建议,但标题的类名对于每个标题不是唯一的。什么是他们独特的内容或标题单元格中的文字。 –

+0

所以你想抓住​​的所有值?如果是这样,这应该做的工作:“//表// td” –

相关问题