2012-03-15 70 views
0

我使用hpricot來處理一些外部生成的HTML。hpricot:找到沒有類型B或C的祖先類型A的元素

什麼是最簡單的方法來找到一種類型的元素(在我的情況下:img)不是有一個其他類型的祖先(在我的情況下:p或div)?

我認爲XPath表達式//img[not ancestors::div and not ancestors::p]應該做我正在尋找的東西。不幸的是,hpricot顯然不支持祖先軸。據我所知,在CSS中沒有「沒有這樣的祖先」操作符,我可以使用。

回答

0

我用set操作解決了我的問題。我提取了所有A節點,並將其與B或C祖先相減。這些集很容易表達,我的問題很小,所以我不會遇到性能或資源問題。

(doc.search("img") - doc.search("p img") - doc.search("div img")).each do |node| 
    # process node 
end 
相關問題