我有一张这样的桌子:
<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)的值。如果我正在查找的特定标题名称在当前表中不存在,有没有办法让我获得空白或根本不选择行?
谢谢!
发布于 2016-09-20 07:02:37
您可以使用包含的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"]
https://stackoverflow.com/questions/39575146
复制相似问题