java - 列出所有内容为空的 td 节点

标签 java xml xpath

我正在使用 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/

相关文章:

java - 在 Amazon EC2 t2.micro 实例上运行的 Jar 内存不足

java - ArangoDB 在事务中使用图形模块

java cachedThreadPool 杀死提交的线程

iPhone TableView 搜索 XML

c++ - msxml 删除 CDATA 部分中的换行符

xml - 我可以使用xpath设置属性名称的值吗?

java - 与远程服务 Stream API 连接

php - 如何从 DomDocument::saveHTML 中删除换行符

.net - XML xpath Visual Studio

xml - 根据同一元素的第二个属性的值更改属性的值