> **Источник:** https://python-all.ru/2.7/library/xml.sax.utils.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 19.13. [`xml.sax.saxutils`](https://python-all.ru/2.7/library/xml.sax.utils.html#module-xml.sax.saxutils) – Утилиты SAX

Новое в версии 2.0.

Модуль [`xml.sax.saxutils`](https://python-all.ru/2.7/library/xml.sax.utils.html#module-xml.sax.saxutils) содержит ряд классов и функций, которые часто используются при создании SAX-приложений, как напрямую, так и в качестве базовых классов.

#### `xml.sax.saxutils.escape(data[, entities])`

Экранирует `'&'`, `'<'` и `'>'` в строке данных.

Можно экранировать другие строки данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. Символы `'&'`, `'<'` и `'>'` всегда экранируются, даже если указан *entities*.

#### `xml.sax.saxutils.unescape(data[, entities])`

Снимает экранирование `'&amp;'`, `'&lt;'` и `'&gt;'` в строке данных.

Можно снять экранирование других строк данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. `'&amp'`, `'&lt;'` и `'&gt;'` всегда обрабатываются (снимается экранирование), даже если указан *entities*.

Новое в версии 2.3.

#### `xml.sax.saxutils.quoteattr(data[, entities])`

Похожа на [`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* будет заключено в двойные кавычки. Полученную строку можно использовать непосредственно в качестве значения атрибута:

```python
>>> print "<element attr=%s>" % quoteattr("ab ' cd \" ef")
<element attr="ab ' cd &quot; ef">
```

Эта функция полезна при генерации значений атрибутов для HTML или любого SGML с использованием эталонного конкретного синтаксиса.

Новое в версии 2.2.

#### `class xml.sax.saxutils.XMLGenerator([out[, encoding]])`

Этот класс реализует интерфейс [`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'`.

#### `class xml.sax.saxutils.XMLFilterBase(base)`

Этот класс предназначен для размещения между [`XMLReader`](https://python-all.ru/2.7/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader) и обработчиками событий клиентского приложения. По умолчанию он ничего не делает, только передаёт запросы вверх читателю, а события обработчикам без изменений, но подклассы могут переопределять определённые методы, чтобы изменять поток событий или конфигурационные запросы при их прохождении.

#### `xml.sax.saxutils.prepare_input_source(source[, base])`

Эта функция принимает входной источник и необязательный базовый 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()`.
