Автор оригинала: 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 док