2016-09-19 37 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」 –

相關問題