xml.sax.utils.md
1> **Источник:** https://python-all.ru/3.0/library/xml.sax.utils.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `xml.sax.saxutils` – утилиты SAX89Модуль `xml.sax.saxutils` содержит ряд классов и функций, которые часто бывают полезны при создании SAX-приложений, как для непосредственного использования, так и в качестве базовых классов.1011#### `[xml.sax.saxutils.escape]xml.sax.saxutils.escape(data[, entities])`1213Экранирует `'&'`, `'<'` и `'>'` в строке данных.1415Можно экранировать другие строки данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. Символы `'&'`, `'<'` и `'>'` всегда экранируются, даже если указан *entities*.1617#### `[xml.sax.saxutils.unescape]xml.sax.saxutils.unescape(data[, entities])`1819Раскодирует `'&'`, `'<'` и `'>'` в строке данных.2021Можно раскодировать другие строки данных, передав словарь в качестве необязательного параметра *entities*. Ключи и значения должны быть строками; каждый ключ будет заменён соответствующим значением. `'&'`, `'<'` и `'>'` всегда раскодируются, даже если передан *entities*.2223#### `[xml.sax.saxutils.quoteattr]xml.sax.saxutils.quoteattr(data[, entities])`2425Аналогична [`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* будет заключена в двойные кавычки. Полученную строку можно напрямую использовать в качестве значения атрибута:2627```python28>>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))29<element attr="ab ' cd " ef">30```3132Эта функция полезна при генерации значений атрибутов для HTML или любого SGML с использованием эталонного конкретного синтаксиса.3334#### `[xml.sax.saxutils.XMLGenerator]class xml.sax.saxutils.XMLGenerator([out[, encoding]])`3536Этот класс реализует интерфейс3738`ContentHandler`3940, записывая SAX-события обратно в XML-документ. Другими словами, использование4142[`XMLGenerator`](https://python-all.ru/3.0/library/xml.sax.utils.html#xml.sax.saxutils.XMLGenerator)4344в качестве обработчика содержимого воспроизводит исходный разбираемый документ.4546*out*4748должен быть файлоподобным объектом; по умолчанию используется4950*sys.stdout*5152.5354*encoding*5556– это кодировка выходного потока; по умолчанию5758`'iso-8859-1'`5960.6162#### `[xml.sax.saxutils.XMLFilterBase]class xml.sax.saxutils.XMLFilterBase(base)`6364Этот класс предназначен для размещения между6566`XMLReader`6768и обработчиками событий клиентского приложения. По умолчанию он только передаёт запросы на чтение и события обработчикам без изменений, но подклассы могут переопределять отдельные методы, чтобы модифицировать поток событий или запросы конфигурации по мере их прохождения.6970#### `[xml.sax.saxutils.prepare_input_source]xml.sax.saxutils.prepare_input_source(source[, base])`7172Эта функция принимает входной источник и необязательный базовый URL и возвращает полностью разрешённый объект7374`InputSource`7576, готовый для чтения. Входной источник может быть задан как строка, файлоподобный объект или объект7778`InputSource`7980; парсеры используют эту функцию для реализации полиморфного аргумента8182*source*8384в своём методе8586`parse()`8788.89