gpt4 book ai didi

html - 排除某些子项后,xpath 选择带有空白文本()的父元素

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:59 24 4
gpt4 key购买 nike

我正在尝试选择所有 div.to_get 其子项没有文本内容,不包括某些元素

html:

<body>
<div class="to_get">
<span> </span>
<span class="exclude"> text is ignored </span>
<span> </span>
</div>
<div class="to_get">
<span> there is text here, so don't select the parent div </span>
<span class="exclude"> text is ignored </span>
<span> </span>
</div>
<div class="to_get">
<span> </span>
<span class="exclude"> text is ignored </span>
<span> there is text here, so don't select the parent div </span>
</div>
</body>

xpath 尝试:

//*/body/div[@class='to_get']/descendant::text()[not(ancestor::span/@class='exclude')][normalize-space(.)='']/ancestor::div[@class='to_get']

问题是这仍然返回第二个(和第三个)div.to_get,因为它有第三个(和第一个)span 子元素。但是由于它的第一个(和第三个)span child ,这些 div 应该被排除在外。

xpath 应该只选择第一个 div.to_get。

最佳答案

以下 XPath

//div[@class='to_get' and normalize-space(span[not(@class='exclude')]/text())='']

选择全部div同类to_get只包含空 span元素,不包括 span类别为 exclude 的元素.对于输入 HTML,这仅返回第一个 div .

更新:正如评论所注意到的,上面的 XPath 只检查第一个跨度。遵循 XPath

//div[@class='to_get'][not(span[not(@class='exclude') and not(normalize-space(text())='')])]

选择全部div类别为 to_get 的元素只包含空 span不包括类 exclude 的元素.对于更新后的输入 HTML,只有第一个 div被退回。

关于html - 排除某些子项后,xpath 选择带有空白文本()的父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com