Что такое XML?
XML означает расширяемый язык разметки. Он был разработан для хранения и передачи небольших и средних объемов данных и широко используется для обмена структурированной информацией.
Python позволяет анализировать и изменять XML-документ. Для синтаксического анализа XML-документа вам необходимо иметь в памяти весь XML-документ. В этом руководстве мы увидим, как мы можем использовать класс минидома XML в Python для загрузки и анализа файла XML.
В этом уроке мы узнаем:
- Как разбирать XML с помощью minidom
- Как создать узел XML
- Как анализировать XML с помощью ElementTree
Как разбирать XML с помощью minidom
Мы создали образец XML-файла, который собираемся проанализировать.
Шаг 1) Внутри файла мы можем увидеть имя, фамилию, дом и область знаний (SQL, Python, тестирование и бизнес).
Шаг 2) Как только мы проанализируем документ, мы распечатаем «имя узла» корня документа и « тэг firstchild» . Имя тега и имя узла - стандартные свойства файла XML.
- Импортируйте модуль xml.dom.minidom и объявите файл, который необходимо проанализировать (myxml.xml)
- Этот файл содержит основную информацию о сотруднике, такую как имя, фамилия, дом, опыт и т. Д.
- Мы используем функцию синтаксического анализа на минидоме XML для загрузки и анализа файла XML.
- У нас есть переменная doc и doc получает результат функции синтаксического анализа
- Мы хотим вывести имя узла и дочерний тег из файла, поэтому мы объявляем его в функции печати.
- Запустите код - он распечатывает имя узла (#document) из XML-файла и первый дочерний тэг (сотрудник) из XML-файла.
Примечание :
Nodename и дочерний тэг - стандартные имена или свойства XML-файла. В случае, если вы не знакомы с этим типом соглашений об именах.
Шаг 3) Мы также можем вызвать список тегов XML из документа XML и распечатать. Здесь мы распечатали набор навыков, таких как SQL, Python, тестирование и бизнес.
- Объявите переменную экспертизу, из которой мы собираемся извлечь всю экспертизу, которую имеет сотрудник.
- Используйте стандартную функцию dom под названием "getElementsByTagName"
- Это позволит получить все элементы с именем "умение".
- Объявите цикл по каждому из тегов навыков
- Запустите код - он даст список из четырех навыков
Как создать узел XML
Мы можем создать новый атрибут, используя функцию createElement, а затем добавить этот новый атрибут или тег к существующим тегам XML. Мы добавили новый тег BigData в наш XML-файл.
- Вам нужно написать код, чтобы добавить новый атрибут (BigData) к существующему тегу XML.
- Затем вам нужно распечатать тег XML с новыми атрибутами, добавленными к существующему тегу XML.
- Чтобы добавить новый XML и добавить его в документ, мы используем код «doc.create elements»
- Этот код создаст новый тег навыка для нашего нового атрибута «Большие данные».
- Добавьте этот тег навыка в документ первый ребенок (сотрудник)
- Запустите код - новый тег «большие данные» появится вместе с другим списком экспертизы.
Пример синтаксического анализатора XML
Пример Python 2
импорт xml.dom.minidomdef main ():# использовать функцию parse () для загрузки и анализа XML-файлаdoc = xml.dom.minidom.parse ("Myxml.xml");# распечатать узел документа и имя первого дочернего тегараспечатать doc.nodeNameраспечатать doc.firstChild.tagName# получить список тегов XML из документа и распечатать каждый из нихэкспертиза = doc.getElementsByTagName («экспертиза»)напечатать "% d экспертиза:"% экспертиза.lengthза мастерство в экспертизе:print skill.getAttribute ("имя")# создать новый тег XML и добавить его в документnewexpertise = doc.createElement («опыт»)newexpertise.setAttribute ("имя", "BigData")doc.firstChild.appendChild (newexpertise)Распечатать " "экспертиза = doc.getElementsByTagName («экспертиза»)напечатать "% d экспертиза:"% экспертиза.lengthза мастерство в экспертизе:print skill.getAttribute ("имя")если name == "__main__":главный();
Пример Python 3
импорт xml.dom.minidomdef main ():# использовать функцию parse () для загрузки и анализа XML-файлаdoc = xml.dom.minidom.parse ("Myxml.xml");# распечатать узел документа и имя первого дочернего тегапечать (doc.nodeName)печать (doc.firstChild.tagName)# получить список тегов XML из документа и распечатать каждый из нихэкспертиза = doc.getElementsByTagName («экспертиза»)print ("% d экспертиза:"% экспертиза.length)за мастерство в экспертизе:print (skill.getAttribute ("имя"))# создать новый тег XML и добавить его в документnewexpertise = doc.createElement («опыт»)newexpertise.setAttribute ("имя", "BigData")doc.firstChild.appendChild (newexpertise)Распечатать (" ")экспертиза = doc.getElementsByTagName («экспертиза»)print ("% d экспертиза:"% экспертиза.length)за мастерство в экспертизе:print (skill.getAttribute ("имя"))если __name__ == "__main__":главный();
Как анализировать XML с помощью ElementTree
ElementTree - это API для управления XML. ElementTree - это простой способ обработки файлов XML.
Мы используем следующий XML-документ в качестве образца данных:
- SQL
- Python
Чтение XML с помощью ElementTree:
мы должны сначала импортировать модуль xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Теперь возьмем корневой элемент:
root = tree.getroot()
Ниже приведен полный код для чтения выше данных xml.
import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)выход:
Expertise Data:SQLPython
Резюме:
Python позволяет анализировать весь XML-документ за один раз, а не только по одной строке за раз. Для синтаксического анализа XML-документа вам необходимо, чтобы весь документ был в памяти.
- Чтобы проанализировать XML-документ
- Импортировать xml.dom.minidom
- Используйте функцию parse для анализа документа (doc = xml.dom.minidom.parse (имя файла);
- Вызов списка тегов XML из документа XML с помощью кода (= doc.getElementsByTagName ("имя тегов xml")
- Для создания и добавления нового атрибута в XML-документ
- Используйте функцию createElement