Python Файл XML – як читати, писати та аналізувати
Що таке XML?
XML розшифровується як розширювана мова розмітки. Він розроблений для зберігання та транспортування малих і середніх обсягів даних і широко використовується для обміну структурованою інформацією.
Python дозволяє аналізувати та змінювати документи XML. Щоб проаналізувати XML-документ, вам потрібно мати весь XML-документ у пам’яті. У цьому підручнику ми побачимо, як можна використовувати клас minidom XML у Python для завантаження та аналізу файлів XML.
Як розібрати XML за допомогою minidom
Ми створили зразок файлу XML, який збираємося проаналізувати.
Крок 1) Створіть зразок файлу XML
Всередині файлу ми можемо побачити ім’я, прізвище, місце проживання та сферу знань (SQL, Python, Тестування та Бізнес)
Крок 2) Використовуйте функцію аналізу, щоб завантажити та проаналізувати файл XML
Після аналізу документа ми роздрукуємо його «ім'я вузла» кореня документа та «тег firstchild”. Ім'я тегу та ім'я вузла є стандартними властивостями файлу XML.
- Імпортуйте модуль xml.dom.minidom і оголосите файл, який потрібно розібрати (myxml.xml)
- Цей файл містить деяку основну інформацію про працівника, як-от ім’я, прізвище, місце проживання, досвід тощо.
- Ми використовуємо функцію синтаксичного аналізу в мінідомі XML для завантаження та аналізу файлу XML
- У нас є змінна doc, і doc отримує результат функції аналізу
- Ми хочемо надрукувати назву вузла та дочірній тег із файлу, тому ми оголошуємо їх у функції друку
- Запустіть код. Він друкує ім’я вузла (#document) із XML-файлу та перший дочірній тег (співробітник) із XML-файлу
Примітка::
Ім'я вузла та ім'я дочірнього тегу є стандартними іменами або властивостями XML dom.
Крок 3) Викличте список XML-тегів із XML-документа та роздрукуйте його
Далі ми також можемо викликати список XML-тегів із XML-документа та роздрукувати його. Тут ми роздрукували набір навичок, таких як SQL, Python, Тестування і Бізнес.
- Оголошіть змінну expertise, з якої ми збираємося отримати всі знання, якими володіє співробітник
- Використовуйте стандартну функцію dom під назвою “getElementsByTagName”
- Таким чином ви отримаєте всі елементи під назвою навик
- Оголошіть цикл над кожним із тегів навичок
- Запустіть код. Він дасть список із чотирьох навичок
Як написати вузол XML
Ми можемо створити новий атрибут за допомогою функції «createElement», а потім додати цей новий атрибут або тег до існуючих тегів XML. Ми додали новий тег «BigData» у наш файл XML.
- Щоб додати новий атрибут (BigData) до існуючого XML-тегу, потрібно написати код
- Потім вам потрібно роздрукувати XML-тег із новими атрибутами, доданими до наявного XML-тегу
- Щоб додати новий XML і додати його до документа, ми використовуємо код «doc.create elements»
- Цей код створить новий тег навичок для нашого нового атрибута «Big-data»
- Додайте цей тег навичок до першого дочірнього (працівника) документа
- Запустіть код – новий тег «великі дані» з’явиться разом із іншим списком знань
Приклад аналізатора 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
Підсумки
Python дозволяє аналізувати весь XML-документ за один раз, а не лише один рядок за раз. Щоб проаналізувати XML-документ, вам потрібно мати весь документ у пам’яті.
- Для аналізу XML-документа
- Імпортувати xml.dom.minidom
- Використовуйте функцію «parse» для аналізу документа ( doc=xml.dom.minidom.parse (назва файлу);
- Викличте список XML-тегів із XML-документа за допомогою коду (=doc.getElementsByTagName( «назва xml-тегів»)
- Щоб створити та додати новий атрибут у XML-документ
- Використовуйте функцію «createElement»