Xpath:选择除具有特定属性的元素之外的所有元素

Posted

技术标签:

【中文标题】Xpath:选择除具有特定属性的元素之外的所有元素【英文标题】:Xpath: Select All elements except element with specific attribute 【发布时间】:2022-01-03 13:39:21 【问题描述】:

我需要选择<p>节点中的文本,并排除span中属性为class="DoNotTranslate"的所有文本

例子:

<table>
  <p>Table0
  </p>
  <ol>
    <li>
      <span class="DoNotTranslate">add_punctuation</span>
    </li>
    <li>
      <span class="DoNotTranslate">alternate_graphic</span>
    </li>
  </ol>
  <p>Table1
    <span class="DoNotTranslate"><span class="ScreenElement">call_number</span></span>
  </p>
</table>

预期结果:

<p>Table0</p>
<p>Table1</p>

我尝试了下面的 Xpath,但它不起作用。

//p/node()[not (@class="DoNotTranslate")]

任何其他选择将不胜感激。

【问题讨论】:

【参考方案1】:

你可以通过使用任何一个来足够接近

//p/text()

//p/text()/normalize-space()

这些应该让你得到&lt;p&gt;elements 的文本,而不是它们的&lt;span&gt; 子元素:

Table0
Table1

【讨论】:

以上是关于Xpath:选择除具有特定属性的元素之外的所有元素的主要内容,如果未能解决你的问题,请参考以下文章