Автор оригинала: Pankaj Kumar.
Сегодня мы узнаем, как преобразовать XML в JSON и XML, чтобы он дикторировать в Python. Мы можем использовать Python xmltodict
Модуль для чтения файла XML и преобразовать его в Dict или Djson Data. Мы также можем передавать большие файлы XML и преобразовывать их в словарь. Перед тем как наступление в кодирующую часть, давайте сначала понять, почему требуется преобразование XML.
Преобразование XML в Dict/Json
Файлы XML медленно устаревают, но в Интернете есть довольно большие системы, которые все еще используют этот формат. XML тяжелее, чем JSON, и поэтому большинство разработчиков предпочитают последние в их приложениях.
Когда приложения должны понимать XML, предоставленную любым источником, это может быть утомительная задача для преобразования его в JSON. xmltodict
Модуль в Python делает эту задачу чрезвычайно простым и простым для выполнения.
Начало работы с XMLTODICT
Мы можем начать с xmltodict
Модуль, но нам нужно сначала установить его. Мы будем в основном использовать Пип выполнить установку.
Установите модуль XMLTODICT
Вот как мы можем установить модуль XMLTODICT, используя индекс пакета Python (PIP):
pip install xmltodict
Это будет сделано быстро как xmltodict
это очень легкий модуль. Вот вывод для этой установки:
Лучшим вещам этой установки было то, что этот модуль не зависит от любого другого внешнего модуля, и поэтому он легкий вес и избегает любых конфликтов версии.
Просто чтобы продемонстрировать, на основе систем на основе Debian, этот модуль можно легко установить с помощью APT
инструмент:
sudo apt install python-xmltodict
Еще один точка плюс состоит в том, что этот модуль имеет Официальный пакет Debian Отказ
Python XML к JSON
Лучшее место для начала попытки этого модуля будет выполнять операцию, которую он был сделан, чтобы выполнить в первую очередь, выполнять XML к конверсии JSON. Давайте посмотрим на фрагмент кода о том, как это можно сделать:
import xmltodict import pprint import json my_xml = """""" pp = pprint.PrettyPrinter(indent=4) pp.pprint(json.dumps(xmltodict.parse(my_xml))) 123 Shubham
Давайте посмотрим на вывод этой программы:
Здесь мы просто используем Разбор (...)
Функция для преобразования данных XML в JSON, а затем мы используем JSON
Модуль для печати JSON в лучшем формате.
Преобразование файла XML в JSON
Сохранение данных XML в самом коде не всегда возможно, ни это реалистично. Обычно мы сохраняем наши данные в базе данных, либо в некоторых файлах. Мы можем напрямую выбрать файлы и конвертировать их в JSON. Давайте посмотрим на фрагмент кода, как мы можем выполнить преобразование с файлом XML:
import xmltodict import pprint import json with open('person.xml') as fd: doc = xmltodict.parse(fd.read()) pp = pprint.PrettyPrinter(indent=4) pp.pprint(json.dumps(doc))
Давайте посмотрим на вывод этой программы:
Здесь мы использовали другой модуль PPRINT, чтобы распечатать вывод в формате. Помимо этого, используя Открыть (...)
Функция была простыми, мы использовали его получить файл дескриптора, а затем анализируют файл в объект JSON.
Python XML дикто
Поскольку имя модуля предложит себе, XMLTODICT фактически преобразует данные XML, которые мы предоставляем просто словарь Python. Итак, мы можем просто получить доступ к данным с ключами словаря. Вот образец программы:
import xmltodict import pprint import json my_xml = """""" my_dict = xmltodict.parse(my_xml) print(my_dict['audience']['id']) print(my_dict['audience']['id']['@what']) 123 Shubham
Давайте посмотрим на вывод этой программы:
Итак, теги могут использоваться в качестве клавиш вместе с клавишами атрибута. Клавиши атрибута просто должны быть префиксированы с @
символ.
Поддержка пространств имен в XML
В данных XML у нас обычно есть набор пространств имен, которые определяют объем данных, предоставляемых файлом XML. При преобразовании в формат JSON, то необходимо, чтобы эти пространства имен сохранялись также в формате JSON. Рассмотрим этот образец файла XML:
123 Shubham
Вот образец программы о том, как мы можем включать пространства имен XML в формате JSON, а также:
import xmltodict import pprint import json with open('person.xml') as fd: doc = xmltodict.parse(fd.read(), process_namespaces=True) pp = pprint.PrettyPrinter(indent=4) pp.pprint(json.dumps(doc))
Давайте посмотрим на вывод этой программы:
JSON до XML преобразования
Хотя преобразование от XML в JSON является главной целью этого модуля, XMLTodict также поддерживает обратную работу, преобразуя JSON в форму XML. Мы предоставим данные JSON в самой программе. Вот образец программы:
import xmltodict student = { "data" : { "name" : "Shubham", "marks" : { "math" : 92, "english" : 99 }, "id" : "s387hs3" } } print(xmltodict.unparse(student, pretty=True))
Давайте посмотрим на вывод этой программы:
Обратите внимание, что предоставление одного ключа JSON необходимо правильно работать. Если мы считаем, что мы изменим нашу программу, чтобы содержать несколько клавиш JSON на самом первом уровне, как:
import xmltodict student = { "name" : "Shubham", "marks" : { "math" : 92, "english" : 99 }, "id" : "s387hs3" } print(xmltodict.unparse(student, pretty=True))
В этом случае у нас есть три клавиатуры на корневом уровне. Если мы попытаемся устанавливать эту форму JSON, мы столкнемся к этой ошибке:
Это происходит, потому что XMLTODICT должен построить JSON с самым первым ключом в качестве тега CORT XML. Это означает, что должен быть только один ключ JSON только на корневом уровне данных.
Заключение
В этом уроке мы изучали отличный модуль Python, который можно использовать для разбора и преобразования XML в JSON и VICE-VERSA. Мы также узнали, как преобразовать XML для Dict с использованием модуля XMLTODICT.
Ссылка: API док