代码之家  ›  专栏  ›  技术社区  ›  theMayer

xpath表达式返回不应返回的节点

  •  0
  • theMayer  · 技术社区  · 6 年前

    假设我有以下结构:

    <parent>
      <child></child>
    </parent>
    

    如果我在 <child> 节点,我希望下面的xpath返回空值:

    ./parent::*[not(parent)]

    但是,我得到的结果集列出了孩子的父级。为什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   zx485 potemkin    6 年前

    表达式 not(parent) 检查是否 parent 节点是空元素。
    在您的情况下,它不是,因为它包含 child 节点。

    你要找的表情可能是 not(self::parent) 它检查节点本身是否不是 起源 节点。所以整个表达式应该是

    parent::*[not(self::parent)]
    

    我删除了 ./ 因为在这种情况下没有必要。