来自此示例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'
答案 0 :(得分:2)
可能效率不高,但请尝试:
//*[contains(.,'@') and not(descendant::*[contains(.,'@')])]
或
(//*[contains(.,'@')])[last()]
答案 1 :(得分:2)
您可以通过选择文本节点而不是*
,然后获取其父节点来完成此操作。 XPath表达式为:
//text()[contains(.,'@')]/..
这将返回包含文本节点的标签集合,其中至少有一个文本节点具有电子邮件地址。