все 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Сообщить о неточности