xml.sax.utils.md
1> **Источник:** https://python-all.ru/3.5/library/xml.sax.utils.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 20.11. [`xml.sax.saxutils`](https://python-all.ru/3.5/library/xml.sax.utils.html#module-xml.sax.saxutils) – SAX Утилиты89**Исходный код:** [Lib/xml/sax/saxutils.py](https://python-all.ru/src/3.5/Lib/xml/sax/saxutils.py)1011---1213Модуль [`xml.sax.saxutils`](https://python-all.ru/3.5/library/xml.sax.utils.html#module-xml.sax.saxutils) содержит ряд классов и функций, которые часто используются при создании SAX-приложений, как напрямую, так и в качестве базовых классов.1415#### `xml.sax.saxutils.escape(data, entities={})`1617Экранирует `'&'`, `'<'` и `'>'` в строке данных.1819Можно экранировать другие строки данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. Символы `'&'`, `'<'` и `'>'` всегда экранируются, даже если указан *entities*.2021#### `xml.sax.saxutils.unescape(data, entities={})`2223Снимает экранирование `'&'`, `'<'` и `'>'` в строке данных.2425Можно снять экранирование других строк данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. `'&'`, `'<'` и `'>'` всегда обрабатываются (снимается экранирование), даже если указан *entities*.2627#### `xml.sax.saxutils.quoteattr(data, entities={})`2829Похожа на [`escape()`](https://python-all.ru/3.5/library/xml.sax.utils.html#xml.sax.saxutils.escape), но также подготавливает *data* для использования в качестве значения атрибута. Возвращаемое значение – это строка в кавычках, представляющая *data*, с необходимыми дополнительными заменами. [`quoteattr()`](https://python-all.ru/3.5/library/xml.sax.utils.html#xml.sax.saxutils.quoteattr) выберет символ кавычки на основе содержимого *data*, стараясь избежать экранирования любых кавычек в строке. Если в *data* уже присутствуют как одинарные, так и двойные кавычки, то двойные кавычки будут закодированы, а *data* будет заключено в двойные кавычки. Полученную строку можно использовать непосредственно в качестве значения атрибута:3031```python32>>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))33<element attr="ab ' cd " ef">34```3536Эта функция полезна при генерации значений атрибутов для HTML или любого SGML с использованием эталонного конкретного синтаксиса.3738#### `class xml.sax.saxutils.XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False)`3940Этот класс реализует интерфейс [`ContentHandler`](https://python-all.ru/3.5/library/xml.sax.handler.html#xml.sax.handler.ContentHandler), записывая SAX-события обратно в XML-документ. Другими словами, использование [`XMLGenerator`](https://python-all.ru/3.5/library/xml.sax.utils.html#xml.sax.saxutils.XMLGenerator) в качестве обработчика содержимого воспроизводит исходный разбираемый документ. *out* должен быть файлоподобным объектом; по умолчанию используется *sys.stdout*. *encoding* – это кодировка выходного потока, по умолчанию `'iso-8859-1'`. *short\_empty\_elements* управляет форматированием элементов, не содержащих содержимого: если `False` (по умолчанию), они выводятся как пара открывающего/закрывающего тегов, если установлено `True`, они выводятся как один самозакрывающийся тег.4142Новое в версии 3.2: параметр *short\_empty\_elements*.4344#### `class xml.sax.saxutils.XMLFilterBase(base)`4546Этот класс предназначен для размещения между [`XMLReader`](https://python-all.ru/3.5/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader) и обработчиками событий клиентского приложения. По умолчанию он ничего не делает, только передаёт запросы вверх читателю, а события обработчикам без изменений, но подклассы могут переопределять определённые методы, чтобы изменять поток событий или конфигурационные запросы при их прохождении.4748#### `xml.sax.saxutils.prepare_input_source(source, base='')`4950Эта функция принимает входной источник и необязательный базовый URL и возвращает полностью разрешённый объект [`InputSource`](https://python-all.ru/3.5/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource), готовый к чтению. Входной источник может быть задан в виде строки, файлоподобного объекта или объекта [`InputSource`](https://python-all.ru/3.5/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource); анализаторы (парсеры) используют эту функцию для реализации полиморфного аргумента *source* в своём методе `parse()`.51