我正在使用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节点吗?
答案 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)