考虑这个 XML 文档:
<foo>
<bar id="aaa"/>
<jam>
<bar id="bbb"/>
</jam>
</foo>
我试图找到<bar>
文档中的第一个元素。
这是我发现的:
测试# | XPath 表达式 | 评价表达式 | 结果 |
---|---|---|---|
1 | //bar |
@id |
aaa ,bbb |
2 | //bar[1] |
@id |
aaa ,bbb |
3 | (//bar)[1] |
@id |
aaa |
我不明白的是为什么 Test #2 返回aaa
,bbb
而不是仅仅aaa
. 就好像[1]
操作员不工作一样。
我的理解是,在测试 #2 中,//bar
表达式将找到两个节点,然后[1]
运算符将选择第一个节点。显然,我错过了一些东西。
测试 #3 似乎证实了这一点,这显然是如何表达我真正想要的。
另外,如果将 XML 文档更改为:
<foo>
<bar id="aaa"/>
<bar id="bbb"/>
</foo>
然后你就得到了我期望看到的:
测试# | XPath 表达式 | 评价表达式 | 结果 |
---|---|---|---|
1 | //bar |
@id |
aaa ,bbb |
2 | //bar[1] |
@id |
aaa |
3 | (//bar)[1] |
@id |
aaa |
[1]
关于应该如何工作,我在这里错过了什么微妙之处?