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

XPath 中查找不包含某个属性的元素,用 not(@attr) 是完全正确的写法,但要注意它必须放在谓词 [] 内,并且要明确作用在哪个元素上。
这个表达式本身不是完整路径,它是一个布尔条件,必须嵌套在方括号中,作为元素的筛选谓词使用。例如:
//div[not(@id)] —— 选中所有没有 id 属性的 <div> 元素
<li>
<code>//*[@class and not(@id)] —— 选中有 class 属性但没有 id 属性的所有元素//input[not(@disabled) and not(@readonly)] —— 选中既没 disabled 也没 readonly 的 <input>
容易出错的地方不是语法本身,而是上下文理解偏差:
//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) 必须进 [],它判断的是“属性是否存在”,不是“属性值是否为空”。
以上就是XPath怎么查找不包含某个属性的元素 not(@attr)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号