Python Файл XML – як читати, писати та аналізувати
⚡ Розумний підсумок
Python Обробка XML дозволяє читати, записувати та аналізувати XML-документи за допомогою вбудованих модулів minidom та ElementTree. Клас minidom завантажує файл у пам'ять як DOM, тоді як ElementTree пропонує швидший та більш... PythonAPI дерева ic.

У розділах нижче розглядається розбір, запис та читання XML-файлів у Python.
Що таке XML?
XML розшифровується як розширювана мова розмітки. Він розроблений для зберігання та транспортування малих і середніх обсягів даних і широко використовується для обміну структурованою інформацією.
Python дозволяє розбирати та змінювати XML-документи. Щоб розібрати XML-документ, вам потрібно мати весь XML-документ у пам'яті. У цьому посібнику ми побачимо, як можна використовувати клас XML minidom у Python для завантаження та аналізу файлів XML.
Як розібрати XML за допомогою minidom
Ми створили зразок файлу 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, Тестування і Бізнес.
- Оголосимо змінну expertise, з якої ми збираємося extracвсі назви експертів, які має працівник
- Використовуйте стандартну функцію dom під назвою “getElementsByTagName”
- Таким чином ви отримаєте всі елементи під назвою навик
- Оголосіть цикл для кожного з тегів навичок
- Запустіть код — він видасть список із чотирьох навичок
Як написати вузол XML
Ми можемо створити новий атрибут за допомогою функції «createElement», а потім додати цей новий атрибут або тег до існуючих тегів XML. Ми додали новий тег «BigData» у наш файл XML.
- Вам потрібно написати код, щоб додати новий атрибут (BigData) до існуючого тегу XML
- Потім вам потрібно роздрукувати тег XML з новим атрибутом, доданим до існуючого тегу XML
- Щоб додати новий XML-тег та додати його до документа, ми використовуємо код “doc.createElement”
- Цей код створить новий тег навичок для нашого нового атрибута «BigData»
- Додайте цей тег навички до першого дочірнього елемента документа (співробітник)
- Запустіть код — з’явиться новий тег «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




