2012-07-16 92 views
1

在頁面HTML中,有幾個HTML鏈接,其名稱包含一些子節點。如何使用多條件的xpath選擇HTML鏈接元素

我想只檢索其中的一個;以下內容:

<a href='foo'> 
    <b>Bar</b> 
    <div style="height: 18px;">Garbo</div> 
</a> 

要定位的話,我想精確使用XPath:「給我既包含鏈接‘欄’爲‘嘉寶’,沒有任何問題,如果他們在分離子節點」。

我試試這一個,但閱讀contains功能的一些文章後,這條線可能行不通:

//a[contains(text(),"Bar") and contains(text(),"Garbo")] 

我可以做什麼修正滿足我的要求?

回答

4

你需要使用的選擇是

//a[./*[contains(text(),"Bar")] and ./*[contains(text(),"Garbo")]] 
+1

您不妨用http://www.mizar.dk/XPath/Default.aspx測試選擇 – JohnC 2012-07-16 12:16:22

1

使用

//a[descendant::text()[contains(., 'Bar')] 
    and 
    descendant::text()[contains(., 'Garbo')] 
    ] 

這將選擇具有後代(不僅是兒童)文本節點包含字符串「任何a元素Bar「和包含字符串」Garbo「的後代文本節點。

此選擇想a元素,甚至是以下

<a href='foo'> 
    <b><i>Bar</i></b> 
    <div style="height: 18px;"><span>Garbo</span></div> 
</a>