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

标签 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>

我想要的是找到一个 td 元素,它有一个包含字符串 Showingfont/text() 节点。

匹配 contains(., "Showing")

直接比较效果很好:

//td[font/text()="Showing "]

但我想使用contains() XPath 函数,这样匹配更灵活。

我试过了

//td[contains(font/text(), "Showing ")]

但这会引发错误

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

我已经成功地实现了我想要的

//td[font/text()[contains(., "Showing")]]

但这非常难看,我希望能有更简洁的东西。请有人帮我改进一下,或者确认这是最好和最简洁的方法吗?

最佳答案

试试这个:

//td[contains(font/text()[1], 'Showing ')]

关于xml - 包含给定文本节点元素的 XPath 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11047174/

相关文章:

xml - 如何将 XSD 转换为 XSLT?

c# - 如何使用 LINQ C# 正确搜索 xml 文档

asp.net - XML 解析错误 : no element found Location: http://localhost:8000/web. 配置行号 1,列 1

java - 解析格式错误/不完整/无效的 XML 文件

java - 如果应用程序是多语言的,定位元素的最佳方法是什么?

javascript - 如何在 javascript 中使用 XML?

java - 明明使用solr出现 'Lock obtain timed out'怎么解决?

xml - 为什么 XPath 不适用于 xmlns 属性

xml - 将 xml 标签名称提取到 xml 属性值中

javascript - Xpath获取所有带有内部文本的链接