Python ElementTree XPath 属性的多个条件
Python ElementTree XPath multiple conditions for attributes
我正尝试通过以下规则从我的 XML select 个节点:
名为“tag”的节点的父节点,具有属性 k='k1' 和(v='v1' 或 v='v2')
如何使用 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>
ET xpath 支持非常有限。但是这个 hack 应该有效
roads = root.findall(".//tag[@k='k1']/..") or root.findall(".//tag[@k='k2']/..")
我正尝试通过以下规则从我的 XML select 个节点:
名为“tag”的节点的父节点,具有属性 k='k1' 和(v='v1' 或 v='v2')
如何使用 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>
ET xpath 支持非常有限。但是这个 hack 应该有效
roads = root.findall(".//tag[@k='k1']/..") or root.findall(".//tag[@k='k2']/..")