当前位置: 代码迷 >> python >> XPath表达式,用于查找当前元素以及子元素
  详细解决方案

XPath表达式,用于查找当前元素以及子元素

热度:54   发布时间:2023-07-14 08:58:48.0

通过表达式.//b我可以找到当前元素下面带有标签b所有元素。 如果当前元素也具有b标签,则将找不到它。 如何表达我想找到当前标签的所有子元素以及当前元素本身的情况(如果它与给定的标签名称匹配)?

这是一些示例输入xml:

<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但是我不仅得到了元素本身,一个包含two元素,而且还包含了three元素。

一个XPath表达式能否获得我想要的?

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

您要在此处使用descendant-or-self轴:

descendant-or-self::b

或者,您可以执行此操作,编写起来稍短...

self::b|.//b