2016-01-26 48 views
0

有一些像這樣的HTML代碼:只選擇特定的TR標籤的XPath在java中

<TBODY> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Address</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>1600 Pennsylvania Avenue</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Oval Office</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Washington, DC 22066</DIV> 
 
    </TD> 
 
    </TR> 
 
    </TBODY>

這是一個例子。關鍵是第一個TR只有文本「地址」,剩下的有實際的地址。我想做一個xpath,只是得到後者(即不是第一個)。有沒有辦法使用xpath,如「tbody/tr [> 1]」。我可以創建一個小循環來循環,並忽略第一個循環,但是如果有更好的方法,我會很有興趣知道它。

這是java和eclipse和chrome(儘管瀏覽器應該沒關係)。

感謝

回答

1

您可以使用以下XPath表達式:

/TBODY/TR[position()>1] 

它跳過第一TR元素,只考慮以後。

XPath表達式: -

/TBODY/TR[position()>1]/TD/DIV/text() 

輸出: -

Text='1600 Pennsylvania Avenue' 
Text='Oval Office' 
Text='Washington, DC 22066' 
+0

這將在一個大小爲3的列表中,對嗎?從列表中獲取每個元素並獲取文本? – Tony

+0

是啊O/P只顯示3個地址的列表,但XPATH表達式是通用的,並且對於大小大於3的列表起作用,只有表達式中的條件是跳過第一個元素。是的,文本方法會給你特定節點的文本值,這是你感興趣的。 –

1

你會得到了喜歡的東西:tbody/tr[preceding-sibling::*]/td/div

0

我會用在具有 '地址' 文本TR謂詞,然後讓下面的兄弟TR的。 ..

/TBODY/TR[TD/DIV='Address']/following-sibling::TR/TD/DIV