@Elbek_M
Beginner

Как отсортировать xml на python?

У меня есть файл xml следующей структуры:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <objects>
        <object name="D2">
            <value>a</value>
        </object>
        <object name="D1">
            <value>b</value>
        </object>
        <object name="M1">
            <value>1</value>
        </object>
        <object name="M3">
            <value>3</value>
        </object>
        <object name="M2">
            <value>2</value>
        </object>
    </objects>
</root>


Мне нужно отсортировать их по тегу name, чтобы в итоге получилось: D1 D2 M1 M2 M3, и после этого вытащить значения соответствующих тегам, то есть в итоге должно получиться массив ['b', 'a', '1', '2', '3'].
Работаю с xml впервые, вот что я смог сделать:

import xml.etree.ElementTree as ET
 
value = []
root = ET.parse('xml_data.xml').getroot()
 
for type_tag in root.findall('objects/object/value'):
    value.append(type_tag.text)


Тут в value не отсортированные данные.
Буду признателен за помощь!
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
Удалите лишние принты, они просто для наглядности
import xml.etree.ElementTree as ET
import collections
 
value = {}
root = ET.parse('xml_data.xml').getroot()
 
for type_tag in root.findall('objects/object'):
    value[type_tag.attrib['name']] = type_tag.find('value').text

print(value)
sortedvalue = collections.OrderedDict(sorted(value.items()))
print(sortedvalue)
sortedvaluelist = []
for k, v in sortedvalue.items():
    sortedvaluelist.append(v)
print(sortedvaluelist)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы