1

从此示例 HTML

<html> 
  <title>Our site</title>  
  <body bgcolor="#333366" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> 
    <div id="Layer2" style="position:absolute; width:106px; height:134px; z-index:2; left: 20px; top: 340px;" class="info">info@systems.ca</div> 
  </body> 
</html>

我想使用 XPATH 来获取包含电子邮件的最内部节点

我试过这个:

/*[包含(.,'@')]

但它选择了“HTML”节点。节点的名称应该是任何东西(我知道“@”是一个非常周的选择,但我将使用正则表达式来确保节点包含电子邮件)。

编辑

在这种情况下,我想要“DIV”

4

2 回答 2

2

可能不是最有效的,但请尝试:

//*[contains(.,'@') and not(descendant::*[contains(.,'@')])]

或者

(//*[contains(.,'@')])[last()]
于 2013-10-25T16:39:47.740 回答
2

您可以通过选择文本节点而不是 来执行此操作*,然后获取它们的父节点。XPath 表达式将是:

//text()[contains(.,'@')]/..

这将返回一组包含文本节点的标签,其中至少有一个具有电子邮件地址。

于 2013-10-25T16:39:51.780 回答