Автор оригинала: Pankaj Kumar.
Модуль XMLTODICT в Python: практическая ссылка
В этом руководстве мы увидим, как установить модуль XMLTODICT и использовать его в наших программах Python, чтобы легко работать с файлами XML. Мы увидим, как преобразовать XML в словари Python и к формату JSON и VICE-VERSIA.
Установите модуль XMLTODICT, используя PIP
Для Python 3 или выше мы можем использовать команду PIP3 для установки XMLTODICT с помощью терминала.
pip3 install xmltodict
Для более старых версий Python мы можем использовать следующую команду для установки XMLTODICT.
pip install xmltodict
Какой файл XML?
XML обозначает расширяемую раскладку, и он был разработан в основном для хранения и транспортировки данных.
Это описательный язык, который поддерживает запись структурированных данных, и мы должны использовать другое программное обеспечение для хранения, отправки, приема или отображения данных XML.
Следующий файл XML имеет данные для самолета, такого как год, сделать, модель и цвет.
1977 Cessna Skyhawk Light blue and white
Теперь в следующих разделах мы будем играть с этими данными самолета и посмотреть, как преобразовать его в словарь Python и JSON и преобразовывать их обратно в формат XML с помощью модуля XMLTODICT.
Как прочитать данные XML в словарь Python?
Мы можем конвертировать файлы XML в словарь Python, используя xmltodict.parse ()
Метод в модуле XMLTODICT.
xmltodict.parse ()
Метод принимает файл XML в качестве ввода и изменения его для заказанного словаря.
Затем мы можем извлечь данные словаря из упорядоченного словаря, используя Dict Constructor для словарей Python.
#import module import xmltodict #open the file fileptr = open("/home/aditya1117/askpython/plane.xml","r") #read xml content from the file xml_content= fileptr.read() print("XML content is:") print(xml_content) #change xml format to ordered dict my_ordered_dict=xmltodict.parse(xml_content) print("Ordered Dictionary is:") print(my_ordered_dict) print("Year of plane is:") print(my_ordered_dict['plane']['year']) #Use contents of ordered dict to make python dictionary my_plane= dict(my_ordered_dict['plane']) print("Created dictionary data is:") print(my_plane) print("Year of plane is") print(my_plane['year'])
Выход:
XML content is:Ordered Dictionary is: OrderedDict([('plane', OrderedDict([('year', '1977'), ('make', 'Cessna'), ('model', 'Skyhawk'), ('color', 'Light blue and white')]))]) Year of plane is: 1977 Created dictionary data is: {'year': '1977', 'make': 'Cessna', 'model': 'Skyhawk', 'color': 'Light blue and white'} Year of plane is 1977 1977 Cessna Skyhawk Light blue and white
В приведенном выше примере мы успешно извлекли наши данные самолета из формата XML, используя xmltodict.parse ()
Способ и напечатали данные как в форме упорядоченного словаря и словаря.
Как конвертировать словарь Python в XML?
Мы можем преобразовать словарь Python в формат XML, используя xmltodict.unparse ()
Способ модуля XMLTODICT.
Этот метод принимает объект словаря в качестве ввода, как возвращает данные формата XML в качестве вывода.
Единственное ограничение вот что Словарь должен иметь один корню Так что данные XML можно легко отформатировать. В противном случае это будет причинить ValueError
Отказ
#import module import xmltodict #define dictionary with all the attributes mydict={'plane':{'year': '1977', 'make': 'Cessna', 'model': 'Skyhawk', 'color':'Light blue and white'}} print("Original Dictionary of plane data is:") print(mydict) #create xml format xml_format= xmltodict.unparse(my_ordered_dict,pretty=True) print("XML format data is:") print(xml_format)
Выход:
Original Dictionary of plane data is: {'plane': {'year': '1977', 'make': 'Cessna', 'model': 'Skyhawk', 'color': 'Light blue and white'}} XML format data is:1977 Cessna Skyhawk Light blue and white
В приведенном выше примере мы создали данные самолета в формате XML из простых данных словаря Python. Теперь мы увидим, как преобразовать данные XML в формат JSON.
Как конвертировать XML в JSON?
Мы можем преобразовать данные XML в формат JSON, используя xmltodict модуль и JSON Модуль в Python Отказ В этом процессе мы сначала создаем заказный словарь из формата XML, используя xmltodict.parse ()
метод.
Затем мы преобразуем заказный словарь в формат JSON, используя json.dumps ()
Метод, который принимает упорядоченный словарь в качестве аргумента и преобразует его в json String.
#import module import xmltodict import json #open the file fileptr = open("/home/aditya1117/askpython/plane.xml","r") #read xml content from the file xml_content= fileptr.read() print("XML content is:") print(xml_content) #change xml format to ordered dict my_ordered_dict=xmltodict.parse(xml_content) print("Ordered Dictionary is:") print(my_ordered_dict) json_data= json.dumps(my_ordered_dict) print("JSON data is:") print(json_data) x= open("plane.json","w") x.write(json_data) x.close()
Выход:
XML content is:Ordered Dictionary is: OrderedDict([('plane', OrderedDict([('year', '1977'), ('make', 'Cessna'), ('model', 'Skyhawk'), ('color', 'Light blue and white')]))]) JSON data is: {"plane": {"year": "1977", "make": "Cessna", "model": "Skyhawk", "color": "Light blue and white"}} 1977 Cessna Skyhawk Light blue and white
В приведенном выше примере мы прочитали данные XML в xml_content
а потом xmltodict.parse ()
создает заказный словарь my_ordered_dict
И тогда данные JSON созданы с помощью json.dumps ()
Метод из упорядоченного словаря.
Как конвертировать данные JSON в XML?
Теперь давайте конвертируем данные JSON в формат XML с помощью модуля XMLTODICT, сначала преобразовав данные JSON в словарь Python, используя json.load ()
Способ, а затем преобразование словаря на XML с помощью xmltodict.unparse ()
Отказ
Опять же, здесь ограничение это то, что Данные JSON должны иметь один корню В противном случае это будет причинить ValueError
Отказ
#import module import xmltodict import json #define dictionary with all the attributes fileptr = open("/home/aditya1117/askpython/plane.json","r") json_data=json.load(fileptr) print("JSON data is:") print(json_data) #create xml format xml_format= xmltodict.unparse(json_data,pretty=True) print("XML format data is:") print(xml_format)
Выход:
JSON data is: {'plane': {'year': '1977', 'make': 'Cessna', 'model': 'Skyhawk', 'color': 'Light blue and white'}} XML format data is:1977 Cessna Skyhawk Light blue and white
В приведенном выше примере json.load ()
Принимает объект файла в качестве аргумента и анализа данных, которые создают тем самым словарь Python, который хранится в json_data
Отказ Затем мы преобразуем словарь в файл XML, используя xmltodict.unparse ()
метод.
Заключение
В этой статье мы использовали модуль XMLTODICT для обработки данных XML. Мы видели, как преобразовать данные XML в формат Python Python и формат JSON, а также обратно в формат XML. Счастливое обучение!