我有这样的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上使用类似数组的功能,所以我所匹配的东西都可以要求“在此之前的第二个元素”
这可能吗?
答案 0 :(得分:2)
您可以
只要抓住C之前的第二个同级兄弟(无论类型如何)
带有XPath表达式
/root/c/preceding-sibling::*[2]
preceding-sibling::
的节点数倒退。索引为[1]
的节点是c
之前的节点,索引为[2]
的节点是之前的节点-
之前的第二个元素