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