преобразовать xml, у которого есть дочерние элементы, в словарь - PullRequest
0 голосов
/ 03 августа 2020

У меня есть файл xml с дочерними элементами, и я хочу преобразовать его в dict.

<people>
 <type>
  <name>lo_123</name>
  <country>AUS</country>
  <note>
     <name>joe</name>
     <gender>m</gender>
     <age>26</age>
     <spouse>
         <name>lisa</name>
         <gender>f</gender>
     </spouse>     
  </note>
 </type>
</people>

Это мой код для его преобразования

import xml.etree.cElementTree as ET

xml='xmltest.xml'

crif_tree = ET.parse(xml)
crif_root = crif_tree.getroot()
data = []

for one in crif_root.findall('.//type'):
    reg={e.tag: e.text for e in list(note1)}
    data.append(reg)
for two in crif_root.findall('.//type/note'):
    reg={e.tag: e.text for e in list(note1)}
    data.append(reg)
for three in crif_root.findall('.//type/note/spouse'):
    reg={e.tag: e.text for e in list(note1)}
    data.append(reg)

print(data)

Вот вывод data

[{'name': 'lo_123', 'country': 'AUS', 'note': '\n     '}, {'name': 'joe', 'gender': 'm', 'age': '26', 'spouse': '\n         '}, {'name': 'lisa', 'gender': 'f'}]

Мой желаемый результат будет

[{'name': 'lo_123', 'country': 'AUS', 'note': '\n     ', 'name': 'joe', 'gender': 'm', 'age': '26', 'spouse': '\n         ', 'name': 'lisa', 'gender': 'f'}]
...