2015-04-05 116 views
3

假设下面的标记所有空元素:如何使用XPath选择

<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())]的第一两种情况,但事实并非如此。而且我不知道如何捕捉第三种情况。

更确切地说:我正在搜索所有只包含空白,新行和子节点的节点。

+0

http://stackoverflow.com/questions/8688185/xpath-select-tag-with-empty价值 请检查以上职位。希望能帮助到你。 – TonalLynx 2015-04-05 15:08:36

回答

3

下面的XPath查询捉住他们全部:

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

但不是:

<strong><em>Bar</em> </strong> 
+0

它也会捕获'',这不在预期的结果列表中。 – 2015-12-21 22:58:53

+0

@MichaelKay它已经捕获了列表中的父项,所以在这种情况下我不会太在意......但是如果你不想,我可以在我的问题中完成列表。 – witrin 2015-12-25 13:36:33