gpt4 book ai didi

python - 当子元素具有特定属性值时使用Python中的elementree xpath选择父元素

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:35 25 4
gpt4 key购买 nike

我正在尝试使用 Python 的 ElementTree 来使用 XPath 表达式。我很难提取其子元素具有特定属性值的父元素。这些不在示例 here 中,我也尝试过 this ,这行不通。

我的 XML 文档如下所示:

<Transactions>
<Transaction>
<Project code="abc">
<Description>blah blah</Description>
<StartDate>2014-10-02</StartDate>
</Project>
<Quantity>100</Quantity>
<Price>
<Currency code="EUR" />
<Value>100</Value>
</Price>
</Transaction>
<Transaction>
<Project code="def">
<Description>something else</Description>
<StartDate>2014-10-12</StartDate>
</Project>
<Quantity>4</Quantity>
<Price>
<Currency code="EUR" />
<Value>2</Value>
</Price>
</Transaction>
<Transaction>
<Project code="abc">
<Description>blah blah</Description>
<StartDate>2014-11-02</StartDate>
</Project>
<Quantity>1</Quantity>
<Price>
<Currency code="EUR" />
<Value>123</Value>
</Price>
</Transaction></Transactions>

我正在尝试选择项目代码为“abc”的所有事务元素。

我定义我的根如下:

transactions = ET.parse('../doc.xml').getroot();

这有效(返回所有以 Project 作为子项的 Transaction 元素):

transactions.findall("Transaction[Project]")

这也有效(返回所有具有“abc”代码的项目元素):

transactions.findall(".//Project[@code='abc']")

但是,我有点迷失于如何组合这些(以获取其子项目具有特定代码的事务元素)。这不起作用:

transactions.findall("Transaction[Project[@code='abc']]")

也不是这个(已讨论here):

transactions.findall("Transaction[Project/@code='abc']")

我已经花了 4 个多小时试图解决这个问题:(。如果有人能够为我回答这个问题,那将非常有帮助!

亲切的问候,

迪德里克

最佳答案

如果您正在使用(或者要切换到)lxml.etree 并使用 .xpath() 方法,那么您的表达式将按原样工作:

transactions.xpath("Transaction[Project[@code='abc']]")

关于python - 当子元素具有特定属性值时使用Python中的elementree xpath选择父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com