Python Glossary English

все Python 3xml.etree.ElementTreeпонятие

xml.etree.ElementTree.XMLParser

разбор

Низкоуровневый парсер на expat: принимает данные через feed() и вызывает методы объекта target (start, end, data, close).

Синтаксис

parser = ET.XMLParser(*, target=None, encoding=None)
parser.feed(data)
result = parser.close()

Без target он строит дерево через TreeBuilder и close() возвращает корень; со своим target close() возвращает то, что вернул target.close(), — так можно считать что-то по XML, вообще не строя дерево. С 3.8 параметры только именованные: XMLParser(t) — TypeError, нужно target=t. Комментарии и инструкции обработки стандартный TreeBuilder отбрасывает. Защиты от сущностей-бомб нет — для чужого XML берите defusedxml. Устаревшие XMLTreeBuilder и html= удалены.

Примеры

import xml.etree.ElementTree as ET
class Count:
    def __init__(self):
        self.n = 0
    def start(self, tag, attrib):
        self.n += 1
    def end(self, tag):
        pass
    def close(self):
        return self.n
p = ET.XMLParser(target=Count())
p.feed('<a><b/>')
p.feed('<b/></a>')
print(p.close())  # → 3

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности