Автор оригинала: Pankaj Kumar.
Python XML Parser предоставляет нам простой способ прочитать файл XML и извлекать полезные данные. Сегодня мы рассмотрим API Python ElectionTree XML и узнаем, как использовать его для разбора файла XML, а также модифицировать и создавать документы XML.
Python XML Parser – Python Elementtree
Начнем работать с примерами Python XML Parser, используя ElectionTree.
Примеры Elementtree Python
Мы начнем с очень простого примера, чтобы программно создать файл XML, а затем перейдем к более сложным файлам.
Создание файла XML
В этом примере мы создадим новый файл XML с элементом и под элементом. Давайте начнем сразу:
import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("test.xml")
После того, как мы запустим этот скрипт, новый файл будет создан в том же каталоге с файлом с именем AS test.xml
со следующим содержанием:
Здесь есть две вещи:
- При написании файла мы использовали
WB
режим вместоW
Как нам нужно Напишите файл в двоичном режиме. - Тег пользователя дочернего пользователя – это самозакрывающий тег, поскольку мы не помещали в него никаких подэлементов.
Добавление значений на элементы XML
Давайте улучшим программу, добавив значения в элементы XML:
import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) userId1 = xml.SubElement(children1, "id") userId1.text = "123" userName1 = xml.SubElement(children1, "name") userName1.text = "Shubham" tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("test.xml")
Как только мы запустим этот скрипт, мы увидим, что добавлены новые элементы добавленные со значениями. Вот содержание файла:
123 Shubham
Это совершенно действительны XML, и все теги закрыты. Обратите внимание, что я отформатировал XML SO SO, так как API записывает полный XML в одном прекрасном штрафе, который немного, неполночность!
Теперь давайте начнем с редактирования файлов.
Редактирование данных XML
Мы будем использовать один и тот же файл XML, который мы показали выше. Мы только что добавили еще несколько данных в него как:
123 Shubham 0 234 Pankaj 0 345 JournalDev 0
Давайте попробуем обновлять зарплаты каждого пользователя:
import xml.etree.ElementTree as xml def updateXML(filename): # Start with the root element tree = xml.ElementTree(file=filename) root = tree.getroot() for salary in root.iter("salary"): salary.text = '1000' tree = xml.ElementTree(root) with open("updated_test.xml", "wb") as fh: tree.write(fh) if __name__ == "__main__": updateXML("test.xml")
Стоит отметить, что если вы попытаетесь обновить значение элементов в целое число, он не будет работать. Вам придется назначить строку, как:
salary.text = '1000'
вместо того, чтобы делать:
salary.text = 1000
Python XML Parser Пример
На этот раз давайте попробуем анализировать данные XML, присутствующие в файле и распечатайте данные:
import xml.etree.cElementTree as xml def parseXML(file_name): # Parse XML with ElementTree tree = xml.ElementTree(file=file_name) print(tree.getroot()) root = tree.getroot() print("tag=%s, attrib=%s" % (root.tag, root.attrib)) # get the information via the children! print("-" * 40) print("Iterating using getchildren()") print("-" * 40) users = root.getchildren() for user in users: user_children = user.getchildren() for user_child in user_children: print("%s=%s" % (user_child.tag, user_child.text)) if __name__ == "__main__": parseXML("test.xml")
Когда мы бегаем над скриптом, ниже изображения показывает выпущенный выход.
В этом посте мы изучали, как извлечь, разбираться и преобразовывать файлы XML. ElementTree
является одним из самых эффективных API для выполнения этих задач. Я бы предложил вам попробовать еще несколько примеров анализа XML и изменение разных значений в файлах XML.
Ссылка: API док