【问题标题】:XPath - How can I query for a parent node satisfying an attribute presence condition?XPath - 如何查询满足属性存在条件的父节点?
【发布时间】:2009-05-15 22:52:42
【问题描述】:

我需要查询一个节点以确定它是否有一个包含指定属性的父节点。例如:

<a b="value">
    <b/>
</a>

从 b 作为我的焦点元素,我想执行一个 XPath 查询:

..[@b]

这将返回元素 a。返回的元素 必须a 的父节点,并且不应包含任何 a 的兄弟姐妹。

lxml.etree 库声明这是一个无效的 XPath 表达式。

【问题讨论】:

    标签: python xml xpath


    【解决方案1】:

    您不能将... 速记与谓词结合使用。相反,您需要使用完整的 parent:: 轴。以下内容应该适合您:

    parent::*[@b]
    

    这将选择父节点(无论其本地名称如何),如果它具有“b”属性。

    【讨论】:

      【解决方案2】:

      我不知道 lxml.etree 库,但 ..[@b]完全有效的 XPath更新:参见 Ben Blank 的评论)。与parent::a[@b] 相同,它将在a 元素处返回上下文。

      【讨论】:

      • 调整到 parent::a[@b] 格式效果很好。谢谢。
      • @eddiegroves — "..[@b]" 不是有效的 XPath。您不能将 .或 .. 带有谓词的速记。
      猜你喜欢
      • 1970-01-01
      • 2020-01-11
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多