Python Glossary English

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

xml.etree.ElementTree.TreeBuilder

разбор

Собирает дерево Element из вызовов start/data/end — стандартная цель XMLParser; пригодится и для построения дерева из не-XML формата.

Синтаксис

tb = ET.TreeBuilder(element_factory=None, *, comment_factory=None, pi_factory=None, insert_comments=False, insert_pis=False)

Комментарии и инструкции обработки по умолчанию в дерево не попадают — их сохраняет TreeBuilder(insert_comments=True, insert_pis=True), переданный как target в XMLParser (с 3.8), и только внутри корня. Без парсера им можно собрать дерево из любого источника событий, следя за парностью start/end. data() можно звать несколько раз подряд — куски склеиваются в text или tail.

Примеры

import xml.etree.ElementTree as ET
tb = ET.TreeBuilder()
tb.start('a', {'k': 'v'})
tb.data('hi')
tb.data('!')
tb.end('a')
print(ET.tostring(tb.close(), encoding='unicode'))  # → <a k="v">hi!</a>
import xml.etree.ElementTree as ET
xml = '<a><!-- note --><b/></a>'
print(len(ET.fromstring(xml)))  # → 1 — комментарий выброшен
p = ET.XMLParser(target=ET.TreeBuilder(insert_comments=True))
p.feed(xml)
root = p.close()
print(len(root), root[0].tag is ET.Comment)  # → 2 True

См. также

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