排除包含属性的元素及其所有子元素

Posted

技术标签:

【中文标题】排除包含属性的元素及其所有子元素【英文标题】:Exclude element containing attribute and all its children 【发布时间】:2021-11-24 17:37:57 【问题描述】:

我目前正在尝试检索网页上的所有元素,不包括链接及其子元素。

页面组成如下:

<body>
    <p>
        ...
        <a href='...'>
            <strong> ... </strong>
        </a>
        ...
    </p>
    <p>
        ...
        <a href='...'>
            <strong> ... </strong>
        </a>
        ...
    </p>
</body>

我能够使用//body//*[not(@href)] 获取除链接之外的所有元素。

不过,我也捕获了包含 href 属性的元素的子元素。

如何过滤掉包含href 属性及其子属性的元素?

【问题讨论】:

【参考方案1】:

要实现这一点,您可以指定所有节点既不具有href 属性,也不具有href 属性的祖先。

//body//*[not(@href or ancestor::*/@href)]

【讨论】:

以上是关于排除包含属性的元素及其所有子元素的主要内容,如果未能解决你的问题,请参考以下文章