XPath 返回 XHTML 文件中的第一个<a></a>标记



我是xpath的新手,对它了解不多。我知道有一种方法可以使用xpath在xml/xhtml文件中查找特定标签。就我而言,我正在尝试找到第一个 (a( 链接元素。不幸的是,我的 xpath 字符串 [//a[1]/text((] 返回所有 (a( 链接标签而不是第一个

XPATH: //a[1]/text()
Text='Fachliche Expertise'
Text='Zielerreichung'
Text='Gesamtbeurteilung Leistung'
Expected:
Text='Fachliche Expertise'

这是 xhtml 代码:

<ul class="nav nav-tabs">
    <li class="nav-item">
        <a class="nav-link active null" data-toggle="tab" data-target="#group2">Fachliche Expertise</a>
    </li>
        <li class="nav-item">
        <a class="nav-link  null" data-toggle="tab" data-target="#group1">Zielerreichung</a>
    </li>
    <li class="nav-item">           
        <a class="nav-link  null" data-toggle="tab" data-target="#group7">Gesamtbeurteilung Leistung</a>
    </li>
</ul>

尝试以下 XPath 表达式:

/ul/li[1]/a/text()

由于 HTML 的结构似乎是已知的,我们可以导航到第一个 <li> 元素,然后从锚标记中选择文本。

提供的其他答案的问题

  • /ul/li[1]/a/text()在技术上是正确的,但不是通用的 - 它特定于给定的 XHTML 结构和不会在 XHTML 文件中提供前 <a></a> 标记标题请求。
  • //a/text()[1]是错误的。 它将选择第一个文本节点在所有a元素中。

正确答案

这个XPath,

(//a)[1]

将选择文档中的第一个a元素,而不考虑结构。 然后可以通过此 XPath 选择文本节点子节点,

(//a)[1]/text()

使用此 Xpath:

//a/text()[1]

这将仅选择第一个节点。

最新更新