我如何提取具有相同名称的XML标签/实体?



从我的xml中可以看到,它有两个菠萝,我想提取它的值。我是一个很新的python希望你能帮助我!

-<csData>
-<entity name="1" parentEntity="123" type='a'>
<attribute name="ab" value = ""/>
**<attribute name="pineapple" value = "0.9099"/>**
<attribute name="ac" value = ""/>
-<entity name="0" parentEntity="234" type='a'>
<attribute name="ab" value = ""/>
**<attribute name="pineapple" value = "0.2881"/>**
<attribute name="ac" value = ""/>
</csData>

这里我想提取菠萝的值这里是我的代码:

def extract_pineapple(self, cd, cs, pineapple, root):
data = {'cd_id': cd_id, 'cs_id'=cs=id}
for c in root.findall("./csData/entity[@type='a']"):
for attr in c.findall("./attribute[@name:'pineapple']:
data['pineapple'] = c.find("./attribute[@name='pineapple'].get('value')
return [data]

输出:它只提取了一个值:菠萝:0.2881菠萝:0.2881

我想要的是:菠萝:0.2881菠萝:0.9099

下面的代码似乎可以运行

import xml.etree.ElementTree as ET
xml = '''<csData>
<entity name="1" parentEntity="123" type="a"/>
<attribute name="ab" value = ""/>
<attribute name="pineapple" value = "0.9099"/>
<attribute name="ac" value = "" />
<entity name="0" parentEntity="234" type="a"/>
<attribute name="ab" value = ""/>
<attribute name="pineapple" value = "0.2881"/>
<attribute name="ac" value = ""/>
</csData>'''
root = ET.fromstring(xml)
values = [e.attrib['value'] for e in root.findall('.//attribute[@name="pineapple"]')]
print(values)

输出
['0.9099', '0.2881']