列出所有具有空内容的td节点

时间:2015-01-02 05:58:46

标签: java xml xpath

我正在使用java 1.6。我正在使用下面的xml strcuture。

- <table column="6" row="22">
- <tr>
  <td bold="true" class="header" font="Arial Narrow" size="9">Jinesh</td> 
  <td align="Right" bold="true" font="Arial Narrow" size="9">2007</td> 
  <td align="Right" bold="true" font="Arial Narrow" size="9">2008</td> 
  <td align="Right" bold="true" font="Arial Narrow" size="9">2009E</td> 
  <td align="Right" bold="true" font="Arial Narrow" size="9">2010E</td> 
  <td align="Right" bold="true" font="Arial Narrow" size="9">2011E</td> 
  </tr>
<tr>
  <td font="Arial Narrow" size="9" /> 
  <td font="Arial Narrow" size="9" /> 
  <td font="Arial Narrow" size="9" /> 
  <td font="Arial Narrow" size="9" /> 
  <td font="Arial Narrow" size="9" /> 
  <td font="Arial Narrow" size="9" /> 
  </tr>
     

现在我想列出所有带有空内容的td节点,例如在第二个标签中没有任何内容。目前我使用下面的Xpath表达式列出所有td节点。

//table//tr//td[@font='Arial Narrow' and @size='9']

但是上面的表达式列出了所有td节点是否为空。 有人可以帮我用xpath表达式列出所有带有空内容的td节点吗?

1 个答案:

答案 0 :(得分:4)

您可以通过测试空值来查找空节点,如下所示。或者,您可以添加normalize-space()以丢弃遇到的任何空白:

//td[normalize-space(.)='']

修改

  

Re:如果我想列出td节点,如果父节点的所有子节点td节点都是空的

//table/tr[not(td[normalize-space(.)!=''])]/td

基本上,找到没有非空子td的tr,然后导航到子td。 由于我们已经在td级别确认了这一点,因此无需再次将必须为空的过滤器应用于tr。也可以通过计算空td和所有td和测试来以“正”方式测试它,但我觉得负面更容易(即没有非空的td)