当前位置: 首页 > 面试题库 >

如何对特定文本使用XPath contains()?

薛烨霖
2023-03-14
问题内容

假设我们有一个HTML表格,基本上是这样的:

2|1|28|9|
3|8|5|10|
18|9|8|0|

我想选择仅包含8个元素的单元格,即,第2行的第2个单元格和第3行的第3个单元格。

这是我尝试过的://table//td[contains(.,'8')]。它给了我所有包含8的单元格。因此,我也得到了不必要的值28和18。

我该如何解决?

编辑: 这是一个示例表,如果您想尝试您的xpath。使用左侧的日历-https
:
//sfbay.craigslist.org/sfc/


问题答案:

请小心该 contains() 功能。

使用它来测试 元素是否包含值 是一个常见的 错误 。它真正要做的是测试 字符串是否包含子字符串
。因此,采用字符串值()并测试它是否包含任何子字符串。这可能是您想要的,但通常不是。 __
__
td[contains(.,'8')]``td``.``'8'

这个XPath

//td[.='8']

将选择所有字符串值
等于的*td元素。 *8

另外,这个XPath

//td[normalize-space()='8']

将选择所有normalize-space()字符串值 等于的*td元素。(normalize-
space()
XPath函数会删除开头和结尾的空白,并用单个空格替换空白字符序列。)
*8

笔记:

  • 两者都将甚至工作,如果图8是另一种元素如一个的内部 abspandiv,等。
  • 双方将 匹配<td>gr8t</td><td>123456789</td>等等。
  • 使用normalize-space()会忽略周围的前导或尾随空白8


 类似资料:
  • 问题内容: 如何使用php替换特定行。我不知道行号。我要替换包含特定单词的行。 问题答案: 您可以在较小的文件上使用一种方法,该文件可以两次装入您的内存: 快速说明,PHP> 5.3.0支持lambda函数,因此您可以删除命名的函数声明并将映射缩短为: 从理论上讲,您可以使它成为单个(很难理解)的php语句: 您应该对较大的文件使用另一种(较少占用内存的方法):

  • 我不知道如何使TextView上的特定文本变为粗体。 是这样的

  • 问题内容: 好的,所以我有这个yaml文件,我想替换一个字符串 与字符串 但是我不知道该怎么办。这是完整的Yaml文件 问题答案: 假设您使用的操作系统不错,并且您的YAML文档称为:

  • 我正在系统上处理一个新函数,现在我需要选择一个文件,并保存在用户C:的文件夹中。这个过程是这样发生的,用户上传一个文件到系统中,这个文件可以是任何东西,文本,图像,除了视频,现在它被保存在系统数据库中,但是我的老板想要改变这个过程,所以我需要保存在用户C:上的一个特定文件夹上,我已经创建了特定文件夹,但是我不知道如何将文件保存在创建的文件夹上。因此上载文件的代码如下所示:

  • 我不知道如何从文件中获取特定的文本行。假设文本文件是: 文本文件(标记)的第二行怎么弄?我只需要读就行了,不是编辑就行了。

  • 问题内容: 我有以下html(用标记的换行符): 如何查找 我 要查找的 文本 ?下面的代码返回第一个发现的值,因此我需要以某种方式按 固定文本 进行过滤。 更新 。如果我使用以下代码: 然后它只返回 固定文本: 。 问题答案: 您可以将正则表达式传递给的text参数,如下所示: