xpath条件选择一个节点或另一节点的文本

时间:2018-11-24 12:32:13

标签: html xml xpath

这是我的测试数据

<tbody>
  <tr>
    <td>foo 1</td>
    <td>first interest</td>
    <td>bar 1</td>
  </tr>
  <tr>
    <td>foo 2</td>
    <td>
      <p>second interest</p>
    </td>
    <td>bar 2</td>
  </tr>
  <tr>
    <td>
    </td>
    <td>
    </td>
    <td>
    </td>
  </tr>
</tbody>

我想每次选择表行的第二个单元格(td[2])的文本,但是问题在于该文本可以在另一个子元素中(第p段)。

当我执行该xpath //tbody/tr[1]/td[2]/p/text() | //tbody/tr[1]/td[2]/text()时,结果正常,但是如果我对第二行//tbody/tr[2]/td[2]/p/text() | //tbody/tr[2]/td[2]/text()执行此操作,则会得到三个文本,其中第一个和最后一个为空。如何修改xpath以便每次仅获取我感兴趣的文本。注意:也可能有一个我不想获取的空单元格。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用此XPath从必需的(不是空秒)表单元格中获取文本:

//tbody/tr/td[2]//text()[normalize-space()]