我有一张这样的表:
<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)的值。如果我正在寻找的特定标题名称不存在于我正在查看的当前表中,是否有一种方法让我获得空白或根本不选择行?
谢谢!
答案 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"]