你好,我想问一下,如果我们使用这个 Xpath 到底会做什么。
据我了解,它选择出现在当前节点之前且与当前节点不相同的所有 b 节点。
//b[not(preceding::*=.)]
如果 xml 是这样的:
<a>
<b>English</b>
<b>German</b>
<b>Italian</b>
<b>Belarusian</b>
<b>Russian</b>
<b>Bulgarian</b>
<b>French</b>
<b>English</b>
</a>
这会保留节点的最后一次出现还是第一次出现?这是我不明白的。
我认为它应该保留最后一个,但是在 FILTERXML 函数中使用这个 xpath 我给出了保留第一个出现的结果,所以结果是
{"英语";"德语";"意大利语";"白俄罗斯语";"俄语";"保加利亚语";"法语"}
谁能解释一下吗?
最佳答案
这个 XPath,
//b[not(preceding::*=.)]
选择前面没有相同 string value 的元素的所有 b
元素.
人们可以使用此 XPath 仅选择第一个此类元素,从而消除后面的“重复项”。
注释:
- 要将范围限制为前面的
b
元素,请使用//b[not(preceding::b=.)]
。 - 要将范围限制为前面的
b
sibling 元素,请使用//b[not(preceding-sibling::b=.)]
关于excel - Xpath解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59683666/