2012-11-28 16 views
0

我試圖找到所有包含<font color="red">元素的tbody元素。此XPath表達式是否工作? // test/ancestor :: test

我使用這個XPath表達式:

//font[@color="red"]/ancestor::tbody 

,但它不工作。它應該工作還是這是我正在使用的庫(或其他地方)的問題?我正在使用名爲Nokogiri的Ruby庫。

我也試過

//tbody[descendant::font[@color="red"]] 

但仍沒有運氣。

+0

第二個表達式應該以//開頭。第一個應該工作。文檔中是否有任何命名空間? – choroba

+0

糟糕,我實際上忘了在第二個表達式(現在已修復)之前放置兩個斜線//。所以仍然不起作用。不,在文檔中沒有命名空間。 – Miscreant

回答

1

我發現這個問題:居然還有人在我用的是文檔的源代碼中沒有tbody元素!

我以爲是因爲我使用Chrome的開發工具中的Elements選項卡瀏覽了源代碼,並且此工具由於某種原因在其中添加了<tbody>元素!

所以下面的XPath表達式應該工作,確實工作,如果在源代碼中實際存在的適當tbody元素。

//font[@color="red"]/ancestor::tbody 
+1

當你在Chrome中查看時,你會看到Chrome的'校正'標記:例如,如果html說'

​​細胞
',Chrome瀏覽器將提供失蹤'tbody'元素 – AakashM

+1

這就是爲什麼我們總是要求人們以顯示XML源的樣品。 –

+0

@MichaelKay我也許早就複製使用源樣本Chrome開發人員工具,不知道該工具可以修改本身來源:) – Miscreant

3

這個XPath表達式將選擇所有tbody標籤含有<font color="red">

//tbody[.//font[@color="red"]] 
+0

Downvoter,我在XPATH表達式中添加了缺失的'「' –

+0

這裏'.//'的功能是什麼 –

+0

@ shiplu.mokadd.im:它尋找_current元素_的後代,在這種情況下如果'''被省略,查詢會查找'font'標籤作爲根節點的後代 –