”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 contains() 函数在 XPath 中实现不区分大小写的搜索?

如何使用 contains() 函数在 XPath 中实现不区分大小写的搜索?

发布于2024-11-07
浏览:281

How to Achieve Case-Insensitive Searching in XPath Using the contains() Function?

不区分大小写的 XPath contains() 函数

在 XPath 中,contains() 函数区分大小写。但是,有一些方法可以解决此限制。

方法 1:翻译字符

此方法涉及在检查子字符串之前将字符转换为小写或大写:

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

这将在检查子字符串“test”之前将文本中的所有大写字母转换为小写。

方法 2:动态 XPath 表达式

使用 JavaScript 等脚本语言,您可以构造处理不区分大小写的动态 XPath 表达式:

function xpathPrepare(xpath, searchString) {
  return xpath.replace("$u", searchString.toUpperCase())
              .replace("$l", searchString.toLowerCase())
              .replace("$s", searchString.toLowerCase());
}

xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");

这替换占位符在具有大写、小写和小写版本的搜索字符串的 XPath 表达式中。

其他注意事项

  • 两种方法都假设字母表已知。
  • 如果元素文本可以包含单引号,请将其转义以防止 XPath 语法错误。
  • 如果使用方法 2,则在搜索字符串中处理转义的引号。
版本声明 本文转载于:1729589295如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3