包含给定文本节点元素的XPath表达式

Bor*_*din 5 xml xpath

我正在编写一些Perl来使用XPath来查找td表格中看起来与此类似的特定元素

  <table>
    <tr>
      <td>...</td>
      <td><font color="white" face="verdana, Helvetica, Arial" size="2">Showing <b>1</b>-<b>100</b> of <b>200</b> total</font></td>
      <td>...</td>
      <td>...</td>
    </tr>
  </table>
Run Code Online (Sandbox Code Playgroud)

我想要的是找到一个包含该字符串td的font/text()节点的元素Showing.

火柴 contains(., "Showing")

直接比较工作正常:

//td[font/text()="Showing "]
Run Code Online (Sandbox Code Playgroud)

但我想使用contains()XPath函数,以便匹配更灵活.

我试过了

//td[contains(font/text(), "Showing ")]
Run Code Online (Sandbox Code Playgroud)

但这会引发错误

XPath failed due to: A sequence of more than one item is not allowed as the first argument of contains()
Run Code Online (Sandbox Code Playgroud)

我已经成功实现了我的目标

//td[font/text()[contains(., "Showing")]]
Run Code Online (Sandbox Code Playgroud)

但这非常难看,我希望有更简洁的东西.请有人可以为我改进,或者确认这是最好,最简洁的方法吗?

Kir*_*huk 7

试试这个:

//td[contains(font/text()[1], 'Showing ')]
Run Code Online (Sandbox Code Playgroud)