XPath怎么查找不包含某个属性的元素 not(@attr)

1次阅读

XPath中查找不包含某属性的元素应使用not(@attr),且必须置于方括号内作为谓词,如//div[not(@id)];不可省略方括号,亦不可混淆为属性值为空或不等于某值。

XPath怎么查找不包含某个属性的元素 not(@attr)

XPath 中查找不包含某个属性的元素,用 not(@attr) 是完全正确的写法,但要注意它必须放在谓词 [] 内,并且要明确作用在哪个元素上。

基本语法:not(@属性名)

这个表达式本身不是完整路径,它是一个布尔条件,必须嵌套在方括号中,作为元素的筛选谓词使用。例如:

  • //div[not(@id)] —— 选中所有没有 id 属性的 <div> 元素 <li> <code>//*[@class and not(@id)] —— 选中有 class 属性但没有 id 属性的所有元素
  • //input[not(@disabled) and not(@readonly)] —— 选中既没 disabled 也没 readonly<input>
  • 常见误区提醒

    容易出错的地方不是语法本身,而是上下文理解偏差:

    XPath怎么查找不包含某个属性的元素 not(@attr)

    短影AI

    长视频一键生成精彩短视频

    XPath怎么查找不包含某个属性的元素 not(@attr) 170

    查看详情 XPath怎么查找不包含某个属性的元素 not(@attr)

    • 写成 //div not(@id) ❌ —— 缺少方括号,XPath 解析失败
    • 写成 //div[@id = ''] ❌ —— 这匹配的是 id=""(空值),不是“不存在”
    • 写成 //div[not(@id = 'xxx')] ❌ —— 这是“id 不等于 xxx”,不是“没有 id 属性”

    配合其他条件一起用

    实际场景中常需组合判断。比如找「是按钮、有 type 属性、但没有 name 属性」的元素:

    • //button[@type and not(@name)]
    • 如果还要排除 disabled 状态://button[@type and not(@name) and not(@disabled)]

    基本上就这些 —— 记住 not(@xxx) 必须进 [],它判断的是“属性是否存在”,不是“属性值是否为空”。

text=ZqhQzanResources