Работа с XML и Python на примерах

XML (eXtensible Markup Language) - это язык разметки для хранения и передачи данных. Python имеет встроенную библиотеку для работы с XML-документами под названием 'xml'.

Для начала работы с XML необходимо импортировать модуль xml.etree.ElementTree:

python
import xml.etree.ElementTree as ET

Создание XML-документа начинается с создания корневого элемента. После этого можно добавлять дочерние элементы, атрибуты и текстовый контент:

python
root = ET.Element("catalog")
book = ET.SubElement(root, "book", attrib={"id": "001"})
title = ET.SubElement(book, "title")
title.text = "The Catcher in the Rye"
author = ET.SubElement(book, "author")
author.text = "J.D. Salinger"

Для создания XML-документа из построенного дерева использовать метод ElementTree:

python
tree = ET.ElementTree(root)
tree.write("catalog.xml")

Чтение XML-документа можно сделать следующим образом:

python
tree = ET.ElementTree(file="catalog.xml")
root = tree.getroot()
for book in root.findall("book"):
    title = book.find("title").text
    author = book.find("author").text
    print(f"{title} by {author}")

С помощью метода 'findall' можно осуществлять поиск всех элементов с заданным тегом, а с помощью метода 'find' - искать первый находящийся элемент.

Также библиотека 'xml' предоставляет возможность парсить XML-документы с помощью SAX-парсера или DOM-парсера. Например, для парсинга XML-документа с помощью SAX-парсера можно воспользоваться следующим кодом:

python
import xml.sax
class BookHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.current_tag = ""
        self.book_count = 0
    
    def startElement(self, tag, attributes):
        self.current_tag = tag
        if self.current_tag == "book":
            self.book_count += 1
            print(f"Book {self.book_count}")
    
    def characters(self, content):
        if self.current_tag == "title":
            print(f"Title: {content}")
        elif self.current_tag == "author":
            print(f"Author: {content}")
    
    def endElement(self, tag):
        self.current_tag = ""
        
parser = xml.sax.make_parser()
parser.setContentHandler(BookHandler())
parser.parse("catalog.xml")

SAX-парсер читает XML-документ последовательно и вызывает соответствующие методы при обнаружении открывающих и закрывающих тегов и текстового контента.

В целом, библиотека 'xml' в Python предоставляет достаточно гибкие и мощные возможности для работы с XML-документами.

Похожие вопросы на: "xml python "

ERR_FILE_NOT_FOUND - Страница не найдена
Как использовать функцию scanf для ввода данных в языке программирования C
Discord.js - библиотека для создания Discord ботов на JavaScript
ENV Python - мощный инструмент для создания проектов на Python
Fatal Refusing to Merge Unrelated Histories: How to Resolve Git Error
HTML комментарии в коде: зачем нужны и как использовать
IIFE: что это такое и для чего нужно?
Crontab Guru - Your Ultimate Resource for Mastering Cron Jobs
Test NetConnection
JS Document QuerySelector