Python XML-файл – как читать, писать и анализировать
⚡ Умное резюме
Python Обработка XML позволяет читать, записывать и анализировать XML-документы с помощью встроенных модулей minidom и ElementTree. Класс minidom загружает файл в память в виде DOM, а ElementTree предлагает более быстрый и удобный способ. PythonAPI дерева ic.
В разделах ниже рассматриваются вопросы анализа, записи и чтения XML-файлов. Python.
Что такое XML?
XML означает расширяемый язык разметки. Он был разработан для хранения и транспортировки небольших и средних объемов данных и широко используется для обмена структурированной информацией.
Python Этот класс позволяет анализировать и изменять XML-документы. Для анализа XML-документа необходимо, чтобы весь документ находился в памяти. В этом руководстве мы рассмотрим, как использовать класс XML minidom. Python для загрузки и анализа XML-файлов.
Как анализировать XML с помощью минидома
Мы создали образец XML-файла, который собираемся проанализировать.
Шаг 1) Создайте образец XML-файла.
Внутри файла мы можем увидеть имя, фамилию, дом и область специализации (SQL, Python(Тестирование и бизнес).
Шаг 2) Используйте функцию синтаксического анализа для загрузки и анализа XML-файла.
После анализа документа мы выведем «имя узла» корня документа и «имя тега firstchild». Имя тега и имя узла — это стандартные свойства XML-файла.
- Импортируйте модуль xml.dom.minidom и укажите файл, который необходимо разобрать (myxml.xml).
- Этот файл содержит некоторую базовую информацию о сотруднике, такую как имя, фамилия, дом, опыт и т. д.
- Мы используем функцию синтаксического анализа минидома XML для загрузки и анализа XML-файла.
- У нас есть переменная `doc`, и `doc` получает результат функции `parse`.
- Мы хотим вывести имя узла и имя дочернего тега из файла, поэтому объявляем их в функции print.
- Запустите код. Он распечатывает имя узла (#document) из файла XML и имя первого дочернего тега (сотрудник) из файла XML.
Внимание: Имя узла и имя дочернего тега — это стандартные имена или свойства XML-домена.
Шаг 3) Вызовите список XML-тегов из XML-документа и распечатайте его.
Далее мы также можем вызвать список XML-тегов из XML-документа и распечатать его. Здесь мы распечатали набор навыков, таких как SQL, Python, Тестирование и Бизнес.
- Объявите переменную «экспертиза», из которой мы собираемся извлечьtracвсе названия областей экспертизы, которыми обладает сотрудник.
- Используйте стандартную функцию dom под названием «getElementsByTagName».
- Это позволит получить все элементы с именем «skill».
- Объявите цикл для каждого из тегов навыков.
- Запустите код — он выдаст список из четырех навыков.
Как написать XML-узел
Мы можем создать новый атрибут с помощью функции createElement, а затем добавить этот новый атрибут или тег к существующим тегам XML. Мы добавили новый тег «BigData» в наш XML-файл.
- Вам необходимо написать код для добавления нового атрибута (BigData) к существующему XML-тегу.
- Затем необходимо вывести XML-тег с новым атрибутом, добавленным к существующему XML-тегу.
- Для добавления нового XML-тега в документ используется код «doc.createElement».
- Этот код создаст новый тег навыка для нашего нового атрибута «Большие данные».
- Добавьте этот тег навыка в первый дочерний элемент документа (сотрудник).
- Запустите код — появится новый тег «BigData» вместе с остальным списком экспертных областей.
Пример XML-парсера
Python 2 Пример
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document 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(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document 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() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
Выход:
Expertise Data: SQL Python





