我正在使用 Java 1.6。我有如下所示的 xml 结构。
- <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 节点?
最佳答案
您可以通过测试空值来查找空节点,如下所示。或者,您可以添加 normalize-space()
以丢弃遇到的任何空格:
//td[normalize-space(.)='']
编辑
Re: If I want to list the td nodes if all the children td node of parent tr node is empty
//table/tr[not(td[normalize-space(.)!=''])]/td
基本上,找到一个没有非空子 td 的 tr,然后导航到子 td。
无需再次将 must be empty 过滤器应用于 td
,因为我们已经在 tr
级别确认了这一点。也可以通过计算空的 td 和所有的 td 和测试来以“积极”的方式对此进行测试,但我觉得消极的更容易(即没有非空的 td)
关于java - 列出所有内容为空的 td 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27737983/