2012-07-16 59 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>