gpt4 book ai didi

具有多个后代条件的 Xpath

转载 作者:行者123 更新时间:2023-12-04 10:22:40 26 4
gpt4 key购买 nike

我有一个 HTML 文件,看起来像:

<div id="products">
<div class="product">
<span class="productheader">Product 1</span>
<input type="checkbox" />
</div>
<div class="product">
<span class="productheader">Product 2</span>
<div class="selected_value and_other value plus one value">
<input type="checkbox" checked="checked" />
</div>
</div>
<div class="product">
<span class="productheader">Product 3</span>
<span class="hidden">
<div class="selected_value and_other value">
<input type="checkbox" checked="checked" />
</div>
</span>
</div>
</div>

我想从标题中获得值,其中:
  • 输入被“检查”--> 来自后代的 div 类包含“selected_value”
  • 但不是隐藏的 --> 选定的不是具有“隐藏”类的跨度的一部分

  • 因此,只有第二个 productheader 值(Product 2)应该是结果。

    正确的 xpath 应该是什么样的?

    尝试了很多东西,但没有一个奏效。最接近:
    //div[contains(@class, 'product')]//*[descendant::div[contains(@class ,"selected_value")]]

    问题是这并没有考虑到它可能没有隐藏!

    最佳答案

    您可以通过不同的方式进行操作,如下所示。
    选项1:

    //div[starts-with(@class,'selected_value')][not(parent::span[@class='hidden'])]/preceding-sibling::span/text()

    选项 2:最简单
    //div[starts-with(@class,'selected_value')]/preceding-sibling::span/text()

    选项 3:如果您想使用 span 类,请按照此操作。
    //div[starts-with(@class,'selected_value')]/preceding-sibling::span[@class='productheader']/text()

    关于具有多个后代条件的 Xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60777234/

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