Python Glossary English

Python 3.8+xml.etree.ElementTreeфункция

xml.etree.ElementTree.canonicalize()

канонизация

Приводит XML к каноническому виду C14N 2.0, чтобы два документа можно было сравнить побайтно. Возвращает str или пишет в out.

Синтаксис

ET.canonicalize(xml_data=None, *, out=None, from_file=None, **options)

Канонизация сортирует атрибуты, раскрывает пустые теги <b/> в <b></b> и убирает декларацию — сравнение двух XML как строк без неё ложно расходится. Пробелы между тегами по умолчанию значимы: strip_text=True их обрезает. Комментарии выбрасываются, если не задать with_comments=True. Результат — str (не bytes, в отличие от tostring), а файл для out открывают в текстовом режиме с utf-8.

Примеры

import xml.etree.ElementTree as ET
a = '<r z="1" a="2"><b/></r>'
b = '<r a="2" z="1"><b></b></r>'
print(a == b, ET.canonicalize(a) == ET.canonicalize(b))  # → False True
print(ET.canonicalize(a))  # → <r a="2" z="1"><b></b></r>
print(ET.canonicalize('<r> <b>t</b> </r>', strip_text=True))  # → <r><b>t</b></r>

См. также

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