xml.sax.utils.md
1> **Источник:** https://python-all.ru/2.7/library/xml.sax.utils.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 19.13. [`xml.sax.saxutils`](https://python-all.ru/2.7/library/xml.sax.utils.html#module-xml.sax.saxutils) – Утилиты SAX89Новое в версии 2.0.1011Модуль [`xml.sax.saxutils`](https://python-all.ru/2.7/library/xml.sax.utils.html#module-xml.sax.saxutils) содержит ряд классов и функций, которые часто используются при создании SAX-приложений, как напрямую, так и в качестве базовых классов.1213#### `xml.sax.saxutils.escape(data[, entities])`1415Экранирует `'&'`, `'<'` и `'>'` в строке данных.1617Можно экранировать другие строки данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. Символы `'&'`, `'<'` и `'>'` всегда экранируются, даже если указан *entities*.1819#### `xml.sax.saxutils.unescape(data[, entities])`2021Снимает экранирование `'&'`, `'<'` и `'>'` в строке данных.2223Можно снять экранирование других строк данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. `'&'`, `'<'` и `'>'` всегда обрабатываются (снимается экранирование), даже если указан *entities*.2425Новое в версии 2.3.2627#### `xml.sax.saxutils.quoteattr(data[, entities])`2829Похожа на [`escape()`](https://python-all.ru/2.7/library/xml.sax.utils.html#xml.sax.saxutils.escape), но также подготавливает *data* для использования в качестве значения атрибута. Возвращаемое значение – это строка в кавычках, представляющая *data*, с необходимыми дополнительными заменами. [`quoteattr()`](https://python-all.ru/2.7/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Новое в версии 2.2.3940#### `class xml.sax.saxutils.XMLGenerator([out[, encoding]])`4142Этот класс реализует интерфейс [`ContentHandler`](https://python-all.ru/2.7/library/xml.sax.handler.html#xml.sax.handler.ContentHandler), записывая события SAX обратно в XML-документ. Иными словами, использование [`XMLGenerator`](https://python-all.ru/2.7/library/xml.sax.utils.html#xml.sax.saxutils.XMLGenerator) в качестве обработчика содержимого воспроизведёт исходный анализируемый документ. *out* должен быть файлоподобным объектом; по умолчанию *sys.stdout*. *encoding* – это кодировка выходного потока; по умолчанию `'iso-8859-1'`.4344#### `class xml.sax.saxutils.XMLFilterBase(base)`4546Этот класс предназначен для размещения между [`XMLReader`](https://python-all.ru/2.7/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/2.7/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource), готовый к чтению. Входной источник может быть задан в виде строки, файлоподобного объекта или объекта [`InputSource`](https://python-all.ru/2.7/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource); анализаторы (парсеры) используют эту функцию для реализации полиморфного аргумента *source* в своём методе `parse()`.51