Gar*_*mel 3 ruby xpath nokogiri
我想从几个不同的网站提取电子邮件地址。如果它们是活动链接格式,我可以使用
//A[starts-with(@href, 'mailto:')]
Run Code Online (Sandbox Code Playgroud)
但其中一些只是文本格式example@domain.com,而不是链接,所以我想选择包含@在其中的元素的路径
我想选择一个包含 @ 的元素的路径
使用:
//*[contains(., '@')]
Run Code Online (Sandbox Code Playgroud)
在我看来,您真正想要的是选择具有包含“@”的文本节点子元素的元素。如果是这样,请使用:
//*[contains(text(), '@')]
Run Code Online (Sandbox Code Playgroud)
基于 XSLT 的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select=
"//*[contains(text(), '@')] "/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当此转换应用于以下 XML 文档时:
<html>
<body>
<a href="xxx.com">xxx.com</a>
<span>someone@xxx.com</span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
计算 XPath 表达式并将所选节点复制到输出:
<span>someone@xxx.com</span>
Run Code Online (Sandbox Code Playgroud)