在XPath中,parent和ancestor有什么区别?

11

我在XPath中看到了两个不同的轴:

  1. parent(父)
  2. ancestor(祖先)

那么,ancestor[1]是否等同于parent呢?也就是说:

//*[text()='target_text']//ancestor::div[1]

等于

//*[text()='target_text']//parent::div
1个回答

18
parent::ancestor::轴之间的区别可以通过它们的名称传达: 一个parent是直接的ancestor
所以,例如对于这个XML:
<a>
  <b>
    <c>
      <d/>
    </c>
  </b>
</a>
  • /a/b/c/d/parent::* 选择 c
  • /a/b/c/d/ancestor::* 选择 cba

因此,是的,/a/b/c/d/ancestor::*[1]/a/b/c/d/parent::* 是相同的。


2
讲解得很清楚。 - undetected Selenium
1
很好的解释,谢谢。 - Hakim Bencella

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接