Рубрики
Без рубрики

Python XML Parser – ElectionReee

Python XML Parser, Python ElectionTree, Python Read XML Пример, Python Edit XML-файл, Python Create XML-файл, пример Python ElectionTree, пример Python XML-анализатора, Python XML.

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