我正在阅读捷径“//”,这显然是以下方面的捷径:
'/后代或自我'
从这种表达的一个简单例子中可以很清楚地看到什么,例如,
//我的节点
它将返回文档中所有实例的节点列表,从根中找到,称为“myNode”的元素。
但是,更复杂的表达是什么意思,比如:
//aNode//myNode
?
由于 //(是 '/descendant-or-self' 的快捷方式)两次匹配根节点,这是否意味着表达式 '//aNode' 的第一部分是多余的,只会增加完成所需的时间表达式的执行(在整个文档中仍然只找到'myNode'的所有表达式之后)?
'//myNode' 和 '//aNode//myNode' 会产生完全相同的结果吗?
最后,如果我在文档中搜索节点“myNode”的实例,它是节点“interestingTree”的间接后代。但是我不想要节点“myNode”的实例,它是节点“nonInterestingTree”的间接后代,我应该怎么做?
例如,在文档中搜索:
<root>
<anode>
<interestingTree>
<unknownTree>
<myNode/><!-- I want to find this one, not the other, where I don't know the path indicated by 'unknownTree' -->
</unknownTree>
</interestingTree>
<nonInterestingTree>
<unknownTree>
<myNode/>
</unknownTree>
</nonInterestingTree>
</anode>
<anode>
<someOtherNode/>
</anode>
</root>
谢谢!