2011-03-13 22 views
-1

可能重複:
if you know xpath then please help?幫我使用XPath請

喜, 所以這裏是HTML代碼

<html> 
<body> 
<table> 
<tr> 
Test 
</tr> 
<tr> 
<td> 
<a href = "google.com"> 
Google 
</a> 
</td> 
</tr> 

<tr> 
<td> test1</td> 
<td> 
<a href = "yahoo.com"> Yahoo!</a> 
</td> 
</tr> 


</tr> 
</table> 

</body> 
</html> 

所以現在我想要的文字谷歌和雅虎

我怎樣讓這個

這裏是我寫的

table[1]/tr[1]/td[2] 

我dont't知道發生了什麼,但什麼都不顯示出來......

感謝

+0

請不要問重複的問題底部的額外</tr>。編輯您的原始問題來改善它。 – 2011-03-13 05:08:59

+0

@John Saunders:我同意。但我們應該關閉一個,而不是兩個... – 2011-03-13 20:51:26

+0

這兩個問題指的是不同的結構,並在兩個答案中都有一個獨特的點 – zode64 2011-03-13 21:46:46

回答

0

你正在尋找的XPath是如下:

對於谷歌

/html/body/table/tr[2]/td/a/text() 

對於雅虎

/html/body/table/tr[3]/td/a/text() 

由於標題包含在'a'元素中並且您可以使用text()節點類型測試以獲取'a'元素的文本值。

其實我覺得你的HTML有在這使得它無效

+0

'text()'不是一個函數,而是一個節點類型測試。在XHTML等混合內容模型中選擇文本節點並不是一個好主意...... – 2011-03-13 20:53:16

+0

可以理解,我已經編輯了關於描述text()作爲函數的答案,但是如果您有替代text(),它會回答有關被問及的內容的問題 – zode64 2011-03-13 21:37:31

+0

如果結果必須是節點集,那麼正確的方法是選擇這些'a'元素,然後通過適當的DOM方法獲取它們的字符串值。如果結果只能是一個節點的字符串值,那麼你可以使用'string()'XPath的函數。 – 2011-03-13 21:45:33

0

如果你知道總會有這樣的數量和類型的元素:

/html/body/table/tr/td/a/ 

一個更通用的方法是:

html//a 
+0

假設您的HTML文檔是有效的XML,在這種情況下,它是。一般來說,確保你使用的是XHTML。 – Mike 2011-03-13 05:16:27