将元素内容提取为列表并使用 XPath 1.0 排除子元素

Extract element content as list and exclude sub element with XPath 1.0

我目前正在尝试提取 li 字符串作为元素列表,但我 想要排除 form 元素

到目前为止,我没有返回两个项目,因为 a 之间的元素

//*[@id="quickPromoBucketContent"]//li[descendant::form]/text()

HTML:

<div class="bucket" id="quickPromoBucketContent">
 <div class="content">
  <ul class="qpUL">
  <li>Sparen Sie 5&nbsp;% beim Kauf von <a href="">Wasserdichte Handyhülle 2 Stück</a> wenn Sie 1 oder mehrere Auto Handy Halterung aus dem Angebot von UGREEN GROUP LIMITED UK
    erwerben! Geben Sie den Code 49DFYWAQ an der Kasse ein. <a href="" target="AmazonHelp">Weitere Informationen</a>        (Teilnahmebedingungen)
    <form method="post" action="/gp/item-dispatch">
    </form>
  </li>
  <li>Sparen Sie 5&nbsp;% beim Kauf von <a href="">USB C PD Schnellladekabel</a> wenn Sie 1 oder mehrere Auto Handyhalterung aus dem Angebot von UGREEN GROUP LIMITED UK erwerben!
    Geben Sie den Code 5BWVW4YN an der Kasse ein. <a href="" target="AmazonHelp">Weitere Informationen</a>        (Teilnahmebedingungen)
    <form method="post" action="/gp/item-dispatch">
    </form>
  </li>
  <li><span id="productPromotion_clipped"><span>Aktivieren Sie diesen Coupon</span>, um beim Kauf dieses Produkts bei Amazon.de 10&nbsp;% zu sparen.</span>
  </li><input type="hidden" name="specialOffersHidden" id="specialOffersHidden">
  <li>
    <div class="amabot_widget">
    </div>
  </li>
 </ul>
</div>
</div>

根据你的示例代码猜想你要查询

  • 下面的所有 li 元素和具有 id="quickPromoBucketContent"
  • 属性的元素
  • 具有后代形式
  • 从那里获取所有 child/descendant 个节点的文本

这样试试:

//*[@id="quickPromoBucketContent"]//li[descendant::form]/descendant-or-self::*/text()

XPath Demo