You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用简洁XPath选择含特定class的div?兼容多版本与主流浏览器

选择包含指定class的div元素的XPath方案

XPath 1.0(主流浏览器Document.evaluate()兼容版本)

XPath 1.0没有原生的class匹配函数,要准确匹配aaa这个独立class(避免aaabbb这类部分匹配的情况),最简洁的准确方案是:

//div[contains(concat(' ', normalize-space(@class), ' '), ' aaa ')]

对比你给出的复杂方案,只是把双引号换成了单引号(无需转义,更简洁),核心逻辑没变:通过normalize-space()处理class里的多余空格(比如连续空格、首尾空格),再用concat()给处理后的class前后加空格,确保aaa是独立的单词,最后用contains()完成匹配。

如果能确保class属性里只有单个空格分隔、无多余空白字符,还可以再简化一点(但兼容性会稍差):

//div[contains(concat(' ', @class, ' '), ' aaa ')]

更高版本XPath(2.0+)

从XPath 2.0开始,有了更直观简洁的写法:

  • 用tokenize()分割class属性,判断序列中是否包含目标值:

    //div[tokenize(@class, '\s+') = 'aaa']
    

    tokenize(@class, '\s+')会把class按任意数量的空白字符分割成字符串序列,再判断这个序列里是否存在等于aaa的项。

  • XPath 3.1及以上还提供了专门的contains-token()函数,写法更直接:

    //div[contains-token(@class, 'aaa')]
    

    这个函数直接判断目标字符串是否包含指定的token(按空白字符分隔),不需要手动处理分割和匹配逻辑。

内容的提问来源于stack exchange,提问作者Dr. Gut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:42:38