如何使用XPath选择所有空元素

10
假设以下标记:

Assume the following markup:

<html>
  <body>
    <p>
      <strong>  </strong>
      <strong>
      </strong>
      <strong><em>Bar</em>  </strong>
      <strong><em>  </em>  </strong>
    </p>
  </body>
</html>

如何使用XPath查询获取以下元素?

<strong>  </strong>
<strong>
</strong>
<strong><em>  </em>  </strong>

我曾认为第一和第二种情况大概是像这样的://*[normalize-space(text()) = '' and not(node())],但实际上不是这样的。而且我也不知道如何捕获第三种情况。

更精确地说:我正在搜索所有仅包含空格、换行符和具有相同内容的子节点的节点。


请查看上述帖子。希望能对您有所帮助。 - TonalLynx
1个回答

17

下面的XPath查询可以捕获它们全部:

//*[not(normalize-space())]

但不是:

<strong><em>Bar</em>  </strong>

1
它还会捕获<em> </em>,这不在预期结果列表中。 - Michael Kay
@MichaelKay 它已经捕获了它的父级,而父级已经在列表中,所以在这种情况下我不太在意...但如果您想要,我可以在我的问题中完整列出列表。 - witrin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接