【问题标题】:Trying to get the last TABLE element (xpath)试图获取最后一个 TABLE 元素(xpath)
【发布时间】:2020-03-25 23:32:56
【问题描述】:

我有一个 html 文档,正在尝试访问最后一个 TABLE 元素。

如果我执行以下操作 - 我会得到正确的快照长度 5。

var headings = document.evaluate( ".//table[@class='blue']",document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);

查看 HTML 页面结构 - xpath 捕获的 TABLES 中有 2 个是嵌套的

表 桌子 桌子 桌子 TABLE

文档中只有5个表,class='blue'

我想访问最后一个 - 所以我做到了:

var headings = document.evaluate( ".//table[@class='blue'][last()]",document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);

它返回一个意外的长度 4 - 我期待 1。

最后一个快照条目 (idx=3) 是正确的 TABLE。使用 last() 时,它似乎跳过了 1 个隐藏的表。

我怎样才能得到最后一个 TABLE 元素?

查看 html 文档 - 有 class='blue' 的 5 个表,其中两个是嵌套的

TABLE
TABLE
  TABLE
  TABLE
TABLE   <<-- I'm interested in this one

我试过了

var headings = document.evaluate( ".//table[@class='blue' and position() = last()]",document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);

它返回的长度为 3 - 中间的三个表。

【问题讨论】:

  • 我相信是[position() = last()]...
  • 不,不是这样。我认为这与双方括号有关。有没有办法在第一个括号内做逻辑和?

标签: javascript xpath


【解决方案1】:

看起来正确的答案是

"(.//table[@class='blue'])[last()]"

需要 table 周围的 perens。

有没有效率低下的地方?

更好的方法?

【讨论】:

  • 不是更好的方法,而是另一种选择://table[@class='blue'][count(./preceding::table[@class='blue']])=count(table[@class='blue'])-1]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2020-03-28
  • 2022-08-17
  • 2010-11-30
  • 1970-01-01
  • 2012-04-02
  • 2017-05-14
相关资源
最近更新 更多