От автора: что такое XML? XML расшифровывается как расширяемый язык разметки. Он был разработан для хранения и передачи небольших и средних объемов данных и широко используется для обмена структурированной информацией.
Python позволяет парсировать и изменять XML-документ. Для парсинга XML-документа вам необходимо иметь в памяти весь XML-документ. В этом руководстве мы рассмотрим, как в Python использовать класс XML minidom для загрузки и парсинга XML-файла.
Мы узнаем:
Как парсить XML с помощью minidom
Как создать XML-узел
Как парсить XML с помощью ElementTree
Как парсить XML с помощью minidom
Мы создали образец XML-файла, который мы собираемся парсить.
Шаг 1) Внутри файла мы видим имя, фамилию, дом и навыки (SQL, Python, Testing и Business)
Шаг 2) После того, как мы спарсим документ, мы выведем «имя узла» корня документа и «первый дочерний тэг». Tagname и nodename являются стандартными свойствами файла XML.
Импортируйте модуль xml.dom.minidom и объявите файл для парсинга (myxml.xml)
Этот файл содержит основную информацию о сотруднике, такую как имя, фамилия, адрес, навыки и т. д.
Мы используем функцию parse в minidom XML для загрузки и парсинга файла XML
У нас есть переменная doc, doc получает результат функции parse
Мы хотим вывести имя файла и дочерний тэг, поэтому объявляем это в функции print
Запустите код. Он выведет имя узла (#document) из файла XML и первый дочерний тэг (employee) из файла XML.
Примечание: Nodename и tagname являются стандартными именами или свойствами XML dom. В случае, если вы не знакомы с этим типом именования.
Шаг 3) Мы также можем вызвать список тегов XML из документа XML и вывести его. Здесь мы вывели набор навыков, таких как SQL, Python, Testing и Business.
Объявление переменной expertise, из которой мы будем извлекать всю информацию сотрудника
Используем стандартную функцию dom с именем «getElementsByTagName»
Она получит все элементы с именем skill
Объявляем цикл для каждого из тегов skill
Запустите код — он выдаст список из четырех навыков
Как создать XML-узел
Мы можем создать новый атрибут с помощью функции «createElement», а затем добавить этот новый атрибут или тег к существующим тегам XML. Мы добавили новый тег «BigData» в XML-файл.
Вам нужно написать код, чтобы добавить новый атрибут (BigData) в существующий тег XML
Затем вам нужно вывести тег XML с новыми атрибутами, добавленными к существующему тегу XML.
Чтобы добавить новый XML и вставить его в документ, мы используем код «doc.create elements»
Этот код создаст новый тег skill для нашего нового атрибута «Big-data»
Добавьте этот тег в first child документа (employee)
Запустите код — появится новый тег «big data» с другим списком навыков.
Пример XML-парсера
Пример Python 2
import xml.dom.minidom def main(): # используем функцию parse() для загрузки и парсинга XML файла doc = xml.dom.minidom.parse("Myxml.xml"); # выводим узел документа и имя первого дочернего тега print doc.nodeName print doc.firstChild.tagName # получаем список тегов XML из документа и выводим каждый expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") # создаем новый тег XML и вставляем его в документ newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Пример Python 3
import xml.dom.minidom def main(): # используем функцию parse() для загрузки и парсинга XML файла doc = xml.dom.minidom.parse("Myxml.xml"); # выводим узел документа и имя первого дочернего тега print (doc.nodeName) print (doc.firstChild.tagName) # получаем список тегов XML из документа и выводим каждый expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # создаем новый тег XML и вставляем его в документ newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
Как парсить XML с помощью ElementTree
ElementTree — это API для управления XML. ElementTree — это простой способ обработки файлов XML. В качестве примера данных мы используем следующий XML-документ:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Чтение XML с использованием ElementTree
Сначала нам нужно импортировать модуль xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Теперь давайте выберем корневой элемент:
root = tree.getroot()
Ниже приведен полный код для чтения данных XML:
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # все данные print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text) #Вывод: #Expertise Data: #SQL #Python
Заключение
Python позволяет парсить весь XML-документ за один раз, а не только одну строку за раз. Для парсинга XML-документа вам необходимо иметь в памяти весь документ.
Парсинг XML-документа
Импортируйте xml.dom.minidom
Используйте функцию parse для парсинга документа (doc = xml.dom.minidom.parse(имя файла);
Вызовите список тегов XML из документа XML с использованием кода (=doc.getElementsByTagName(«имена тегов xml»)
Создание и добавление нового атрибута в XML-документ
Используйте функцию «createElement»
Источник: https://www.guru99.com
Редакция: Команда webformyself.