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

---

# `xml.sax.saxutils` – утилиты SAX

Модуль `xml.sax.saxutils` содержит ряд классов и функций, которые часто бывают полезны при создании SAX-приложений, как для непосредственного использования, так и в качестве базовых классов.

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

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

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

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

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

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

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

Аналогична [`escape()`](https://python-all.ru/3.0/library/xml.sax.utils.html#xml.sax.saxutils.escape), но также подготавливает *data* для использования в качестве значения атрибута. Возвращаемое значение – это строка *data*, заключённая в кавычки, с дополнительными необходимыми заменами. [`quoteattr()`](https://python-all.ru/3.0/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 с использованием эталонного конкретного синтаксиса.

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

Этот класс реализует интерфейс

`ContentHandler`

, записывая SAX-события обратно в XML-документ. Другими словами, использование

[`XMLGenerator`](https://python-all.ru/3.0/library/xml.sax.utils.html#xml.sax.saxutils.XMLGenerator)

в качестве обработчика содержимого воспроизводит исходный разбираемый документ.

*out*

должен быть файлоподобным объектом; по умолчанию используется

*sys.stdout*

.

*encoding*

– это кодировка выходного потока; по умолчанию

`'iso-8859-1'`

.

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

Этот класс предназначен для размещения между

`XMLReader`

и обработчиками событий клиентского приложения. По умолчанию он только передаёт запросы на чтение и события обработчикам без изменений, но подклассы могут переопределять отдельные методы, чтобы модифицировать поток событий или запросы конфигурации по мере их прохождения.

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

Эта функция принимает входной источник и необязательный базовый URL и возвращает полностью разрешённый объект

`InputSource`

, готовый для чтения. Входной источник может быть задан как строка, файлоподобный объект или объект

`InputSource`

; парсеры используют эту функцию для реализации полиморфного аргумента

*source*

в своём методе

`parse()`

.
