Что такое XML?
XML расшифровывается как расширяемый язык разметки. Он был разработан для хранения и транспортировки небольших и средних объемов данных и широко используется для обмена структурированной информацией.
Python позволяет вам анализировать и изменять XML-документ. Для разбора XML-документа вам необходимо иметь весь XML-документ в памяти. В этом уроке мы увидим, как мы можем использовать класс минидомов XML в Python для загрузки и анализа XML-файла.
В этом уроке мы узнаем
Как разобрать XML с помощью минидома
Мы создали образец XML-файла, который мы собираемся проанализировать.
Шаг 1) Внутри файла мы видим имя, фамилию, дом и область знаний (SQL, Python, Testing and Business)
Шаг 2) После того, как мы проанализируем документ, мы распечатаем «имя узла» корня документа и « тэг firstchild» . Tagname и nodename являются стандартными свойствами файла XML.
- Импортируйте модуль xml.dom.minidom и объявите файл для анализа (myxml.xml).
- Этот файл содержит основную информацию о сотруднике, такую как имя, фамилия, дом, опыт и т. Д.
- Мы используем функцию разбора на минидоме XML для загрузки и разбора файла XML
- У нас есть переменная doc, и doc получает результат функции parse
- Мы хотим напечатать имя файла и дочерний тэг из файла, поэтому мы объявляем это в функции печати
- Запустите код. Он выводит имя узла (#document) из файла XML и первый дочерний тэг (employee) из файла XML.
Примечание :
Nodename и дочерний тэг являются стандартными именами или свойствами XML dom. В случае, если вы не знакомы с этим типом именования.
Шаг 3) Мы также можем вызвать список тегов XML из документа XML и распечатать. Здесь мы распечатали набор навыков, таких как SQL, Python, тестирование и бизнес.
- Объявите переменную экспертизу, из которой мы собираемся извлечь всю экспертизу, имя которой сотрудник
- Используйте стандартную функцию dom под названием «getElementsByTagName»
- Это получит все элементы с именем skill
- Объявите цикл над каждым из тегов умений
- Запустите код — он даст список из четырех навыков
Как создать XML-узел
Мы можем создать новый атрибут с помощью функции «createElement», а затем добавить этот новый атрибут или тег к существующим тегам XML. Мы добавили новый тег «BigData» в наш XML-файл.
- Вы должны написать код, чтобы добавить новый атрибут (BigData) в существующий тег XML
- Затем вы должны распечатать тег XML с новыми атрибутами, добавленными к существующему тегу XML.
- Чтобы добавить новый XML и добавить его в документ, мы используем код «doc.create elements»
- Этот код создаст новый тег навыка для нашего нового атрибута «Большие данные»
- Добавьте этот навык тег в документ первый ребенок (сотрудник)
- Запустите код — появится новый тег «большие данные» с другим списком знаний.
Пример парсера 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") # create 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 Example
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")) # create 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();
How to Parse XML using ElementTree
ElementTree is an API for manipulating XML. ElementTree is the easy way to process XML files.
В качестве примера данных мы используем следующий 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»