如何用括号组合两个XPath表达式,使后者为前者子节点?
解决XPath组合父节点与多子节点选择的问题
你可以用以下写法实现需求,无需重复书写父节点表达式:
//nav[@class='header__nav']/(button|div)
原理说明:
- XPath支持将多个子节点选择器用括号包裹,直接跟在父节点路径之后,这样就能一次性匹配父节点下的多个指定子节点,避免重复书写父节点的定位表达式。
- 你最初的写法
(//nav[@class='header__nav'])(/button|/div)不符合XPath语法规范,因为两个路径表达式直接拼接是无效的,必须通过路径分隔符/将父节点和子节点的选择逻辑关联起来。
如果你的环境支持XPath 2.0及以上版本,还可以用另一种写法:
//nav[@class='header__nav']/*[local-name() = ('button', 'div')]
内容的提问来源于stack exchange,提问作者mrossw
相关产品推荐
相关产品推荐

