Xpath如何从后代节点获取文本

Xpath how to get text from descendant nodes

我有这样的东西:

<div id="m0">
...
 <tr>
  <td></td>
  <td></td>
  <td>Radio</td>
 </tr>
</div>

<div id="m1">
...
<tr>
  <td></td>
  <td></td>
  <td> 
    <a>TV channel</a>
    <font color="#555555">...</font>
  </td>
</tr>
<tr>
  <td></td>
  <td></td>
  <td>
     <i> </i>
  </td>
</tr>
<tr>
  <td></td>
  <td></td>
  <td> 
     <i> Other channel </i>
  </td>
</tr>

我想得到这个结果:['Radio','TV Channel',' ','Other channel]

我试过:ch_nodes=tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[3]/descendant-or-self::*'%div)

在那之后,对于每个节点我都得到了文本,但它给了我我不想要的节点,比如 <font>content。

我也试过这个:ch_nodes=tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[3]/descendant-or-self::*[2]'%div) 但如果没有子节点,则不会给我自我满足。

我怎样才能得到['Radio','TV Channel',' ','Other channel]

tr获取每个第一个文本节点:

$x("//table//tr//*[1]/text()")

如果您想从 tr 获取每个第一个非空文本节点:

$x("//table//tr//*[boolean(string-length(normalize-space(text())))][1]/text()")