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

用于查找当前元素和子元素的XPath表达式

  •  0
  • Alfe  · 技术社区  · 7 年前

    用表达式 .//b 在下面 带标记的当前元素 b b 标签,将找不到它。如何表示我要查找当前标记的所有子级 当前元素本身,以防它与给定的标记名匹配?

    <a>
      <b>
        <i>
          <u>one</u>
        </i>
        <b>two</b>
      </b>
      <b>three</b>
      <em>four</em>
    </a>
    

    如果第一个元素 <b> 是当前元素,我想得到所有子元素(即包含 two three (搜索标记时) b u 我只想要一个 one .

    我试过了 .[name()='b']|.//b 但这显然是一个无效的表达。

    我也试过了 ..//b 但我不仅得到了元素本身和包含 但也包括 .

    用一个XPath表达式就可以得到我想要的东西吗?

    旁注:我在Python的lxml/etree库中使用它,但这应该没有什么区别。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Tim C    7 年前

    你想用 descendant-or-self 此处坐标轴:

    descendant-or-self::b
    

    或者,你可以这样做,这是略短写。。。

    self::b|.//b