Новичок, поэтому пишу кривой код....
Вопрос такой, как из файла XML спарсить данные, отсортировать по
имени и вывести в Excel:
<?xml version="1.0" encoding="UTF-8"?>
<NewDataSet>
<Persons>
<Member>
<ID>5942</ID>
<Name>Григорьев Гордий</Name>
<Age>29</Age>
</Member>
<Member>
<ID>8559</ID>
<Name>Яковлев Григорий</Name>
<Age>58</Age>
</Member>
<Member>
<ID>14543</ID>
<Name>Доронин Евгений</Name>
<Age>53</Age>
</Member>
<Member>
<ID>15470</ID>
<Name>Родионов Митрофан</Name>
<Age>33</Age>
</Member>
<Member>
<ID>17662</ID>
<Name>Николаев Эдуард</Name>
<Age>22</Age>
</Member>
<Member>
<ID>27164</ID>
<Name>Суворов Август</Name>
<Age>31</Age>
</Member>
Вот мой код, но сортировка идет по Фамилии, надо по Имени:
import xml.etree.ElementTree as ET
import copy
a = {}
b = []
def getName(XML_path):
tree = ET.parse(XML_path)
root = tree.getroot()
for y in root[0]:
for i in range(3):
a.update({y[i].tag : y[i].text})
x = copy.deepcopy(a) #make deep copy (a)
b.append(x)
global s
s= sorted(b, key=lambda x: x['Name'])
return print(s)
XML_path = "small_data.xml"
getName(XML_path)
import xlsxwriter
workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet("sheet1")
row = 0
col = 0
for key in s[0]:
worksheet.write(row, col, key)
col+=1
for x in s:
col = 0
row += 1
for item in x.values():
worksheet.write(row, col, item)
col += 1
workbook.close()