
本文旨在解决使用 XPath 提取特定文本节点时遇到的问题,特别是在目标文本节点前存在其他文本节点(例如空白字符)的情况下。我们将介绍如何利用 XPath 1.0 的 substring-after 函数来精确提取所需文本,避免提取到不需要的前导字符或空白。通过本文的学习,你将掌握一种有效的 XPath 文本提取技巧。
在使用 XPath 从 HTML 或 XML 文档中提取文本时,我们经常会遇到目标文本节点前存在其他文本节点的情况,例如空白字符或者分隔符。直接使用 //span[@class="meta"]/text() 这样的 XPath 表达式可能无法精确提取到我们想要的文本,因为该表达式会返回所有文本节点,而在 XPath 1.0 中,如果将节点集合作为字符串参数传递给函数,则只会使用第一个节点的值。
在这种情况下,substring-after 函数提供了一种有效的解决方案。该函数可以从一个字符串中提取指定分隔符之后的部分。
示例
假设我们有以下 HTML 代码片段:
<span class="meta"><span class="authordata"> <a href="https://example.com" title="Posts by me" rel="author">Author</a></span> | Aug 7, 2019 at 9:34 am ET </span>
我们的目标是提取 "Aug 7, 2019 at 9:34 am ET" 这段文本。直接使用 //span[@class="meta"]/text() 可能会返回包含 " |" 前缀的文本,或者由于前导空白字符而提取失败。
以下 XPath 表达式使用 substring-after 函数来解决这个问题:
substring-after(//span[span/a/@rel="author"],' |')
表达式解析:
结果:
该 XPath 表达式将返回:
Aug 7, 2019 at 9:34 am ET
注意事项:
总结:
substring-after 函数是 XPath 1.0 中一个强大的工具,可以帮助我们精确提取字符串中特定分隔符之后的部分。在处理包含前导字符或空白的文本节点时,该函数可以有效地避免提取到不需要的内容。通过结合具体的 HTML 结构和目标文本的特点,我们可以灵活运用 substring-after 函数,实现精确的文本提取。
以上就是使用 XPath 提取文本节点:substring-after 函数的应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号