XPath如何选择注释节点 comment()用法
发布时间 - 2026-01-09 00:00:00 点击率:次XPath中选择注释节点用comment(),它专用于匹配XML/HTML中的注释节点,不带参数、只匹配comment类型节点,支持路径定位、内容筛选及上下文组合,但需注意解析器对注释的支持差异。
XPath 中选择注释节点用 comment(),它是一个节点测试(node test),专门匹配 XML 或 HTML 文档中的注释节点(即 内容)。
comment() 基本语法和匹配逻辑
comment() 本身不带参数,必须放在谓语中或作为节点测试使用。它只匹配类型为“comment”的节点,不匹配文本、元素或属性节点。
-
//comment():选取文档中所有注释节点(无论嵌套多深) -
/html/head/comment():仅匹配元素直接子节点中的注释 -
//div/comment()[1]:选取每个下第一个注释子节点//comment()[contains(., 'TODO')]:选取内容包含 "TODO" 的注释节点(注意:comment() 节点的字符串值就是其内部文本)实际使用注意事项
HTML 解析器(如浏览器 DOM 或 lxml)对注释节点的支持程度不同。原生浏览器 XPath 引擎(如 Chrome/Firefox 的
document.evaluate)支持comment(),但部分 HTML 解析库(如旧版 BeautifulSoup)默认不保留注释节点,需显式启用。- 在 lxml 中需确保解析时传入
parser=etree.HTMLParser(remove_comments=False),否则注释会被丢弃 - 注释节点没有标签名、属性或子节点,
name()返回空字符串,local-name()和namespace-uri()同样无效 -
string(comment())等价于string(.),返回注释内容(不含)
常见组合用法示例
结合位置
、内容或上下文筛选注释,能精准定位开发标记或遗留说明:-
//comment()[preceding-sibling::h2][1]:选取每个后面紧跟的第一个注释 -
//*[comment()][1]:选取第一个包含注释子节点的元素 -
//comment()[not(following::comment())]:选取最后一个注释节点(文档末尾的注释)
验证是否生效的小技巧
在浏览器控制台中可快速测试:
- 打开含注释的网页(如源码里有
) - 执行:
document.evaluate('//comment()', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) - 调用
.snapshotLength查数量,或循环用.snapshotItem(i).textContent查内容
# html
# node
# 浏览器
# ai
# win
# red
# firefox
# chrome
# beautifulsoup
# String
# NULL
# xml
# 字符串
# 循环
# Namespace
# dom
# 第一个
# 文档
# 不带
# 放在
# 它是
# 不含
# 小技巧
# 它只
# 旧版
# 中或
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
高防服务器租用指南:配置选择与快速部署攻略
如何自定义建站之星模板颜色并下载新样式?
WEB开发之注册页面验证码倒计时代码的实现
如何在腾讯云免费申请建站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
如何用PHP工具快速搭建高效网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何在阿里云虚拟主机上快速搭建个人网站?
香港服务器如何优化才能显著提升网站加载速度?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
JS中对数组元素进行增删改移的方法总结
Linux系统命令中tree命令详解
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
linux写shell需要注意的问题(必看)
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel如何使用Blade组件和插槽?(Component代码示例)
如何在自有机房高效搭建专业网站?
iOS中将个别页面强制横屏其他页面竖屏
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel怎么实现模型属性的自动加密
如何在建站之星绑定自定义域名?
公司网站制作价格怎么算,公司办个官网需要多少钱?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
制作企业网站建设方案,怎样建设一个公司网站?
微信小程序 闭包写法详细介绍
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何正确下载安装西数主机建站助手?
网站制作价目表怎么做,珍爱网婚介费用多少?
JavaScript实现Fly Bird小游戏
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
在centOS 7安装mysql 5.7的详细教程
轻松掌握MySQL函数中的last_insert_id()
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
网站优化排名时,需要考虑哪些问题呢?
如何在VPS电脑上快速搭建网站?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
如何用PHP快速搭建CMS系统?
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Bootstrap整体框架之JavaScript插件架构
javascript中闭包概念与用法深入理解


、内容或上下文筛选注释,能精准定位开发标记或遗留说明: