使用XPATH之前的::更像是数组

时间:2019-01-18 19:46:39

标签: xpath

我有这样的XML

<root>
  ...
  <a>
  <a>
  <a>
  <c>
...

与很多A元素和一些C元素非常相似。 A元素是传感器数据,最后的读数是假的,我需要一个。因此,我想使用C元素作为标记,并在每个C之前使用A元素2。因此,我正在尝试使用XPATH,如:

/root/c/preceding-sibling::a

但是我得到了以前所有的A元素,我希望有一些更直接的东西,例如:

/root/c/preceeding-sibling[-2]

这只会抢夺C之前的第二个同级兄弟(无论类型如何),我想我想在XPATH上使用类似数组的功能,所以我所匹配的东西都可以要求“在此之前的第二个元素”

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以

  

只要抓住C之前的第二个同级兄弟(无论类型如何)

带有XPath表达式

/root/c/preceding-sibling::*[2]

preceding-sibling::的节点数倒退。索引为[1]的节点是c之前的节点,索引为[2]的节点是之前的节点-

  

之前的第二个元素