XPath对多个标记进行分组
XPath group multiple tags
本文关键字:XPath 更新时间:2023-09-26
我使用以下XPath从文档中获取所有非空文本和图像节点,id为"mpp_controls"的div中的节点除外:
//img[not(ancestor::*[@id='mpp_controls'][normalize-space()])] | //text()[not(ancestor::*[@id='mpp_controls'])][normalize-space()]
由于两个元素的谓词都是相同的,而且我将来可能会为类似的查询添加更多的标签,所以我试图缩短它
//*[self::img or self::text()][not(ancestor::*[@id='mpp_controls'])][normalize-space()]
我也试过:
//*[img or text()][not(ancestor::*[@id='mpp_controls'])][normalize-space()]
不幸的是,两者都给了我一个语法错误。有可能缩短这个查询吗?
*
的意思是"元素"。当然,这不包括文本节点。
此外,您的条件可以组合在一个谓词中。
//node(([(self::img或self:(text((和normalize-space((而不是(祖先::*[@id='pp_controls'](]
另一种选择是
(//img |//text(([normalize-space((]([不是(祖先::*[@id='pp_controls'](]
注意如何使用括号将谓词应用于并集。
相关文章:
- Xpath运行缓慢的查询
- 使用xpath选择所有具有onclick的锚标记
- 如何使用javascript和xpath获取图像src
- 使用XPath样式访问Javascript JSON对象属性
- Xpath对Selenium Web驱动程序无效”;Xpath未找到”;
- Javascript:在jQuery中使用xpath
- 如何使用xpath和Javascript执行器打印文本
- 如何使用Javascript获得相对Xpath
- Scrapy和Xpath从javascript代码中提取数据
- XPath以基于另一个节点按位置选择节点's的位置
- 使用xPath从Jquery数据验证程序获取输入
- 具有长xpath的延长器xpath标识
- ajaxslt 无法使用 XPATH 获取节点
- 在 JavaScript 中查找包含 XPath 字符串的所有元素
- 节点中带有空格的 XPath 表达式表示挑衅.js
- 正在nodejs+xpath中获取节点
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- 将变量传递到CasperJS中的XPath表达式中
- Xpath in Selenium
- 将param作为xpath表达式传递给XSLT-javascript