【问题标题】:Python ElementTree XPath multiple conditions for attributesPython ElementTree XPath 属性的多个条件
【发布时间】:2020-07-10 13:29:00
【问题描述】:

我正在尝试通过以下规则从我的 XML 中选择节点:

具有属性 k='k1' 和(v='v1' 或 v='v2')的名为“tag”的节点的父级

如何使用 python 和 ElementTree 实现它?我尝试了以下代码,但收到错误“SyntaxError: invalid predicate”

roads = root.findall(".//tag[@k='k1'][@v='v1' or @v='v2']/..")
roads = root.findall(".//tag[@k='k1' and (@v='v1' or @v='v2')]/..")

更新

XML 示例

<parent>
  <tag k="k1" v="v1"/>
  <tag k="k1" v="v2"/>
  <tag k="k1" v="v3"/>
 </parent>

【问题讨论】:

  • 首先,你能用一个简短的、有代表性的xml样本来编辑你的问题吗?二、可以用lxml之类的库还是需要ET?

标签: python xpath elementtree


【解决方案1】:

ET xpath 支持非常有限。但是这个 hack 应该可以工作

roads = root.findall(".//tag[@k='k1']/..") or root.findall(".//tag[@k='k2']/..") 

【讨论】:

    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多