Документация Python неофициальный перевод

xml.sax.md

168 строк · 10.0 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/library/xml.sax.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 19.7. `xml.sax` – Поддержка парсеров SAX289Пакет `xml.sax` содержит несколько модулей, реализующих интерфейс Simple API for XML (SAX) для Python. Сам пакет предоставляет исключения SAX и удобные функции, которые чаще всего используются при работе с SAX API.1011Удобные функции:1213#### `xml.sax.make_parser(parser_list=[])`1415Создаёт и возвращает объект SAX1617`XMLReader`1819. Будет использован первый найденный парсер. Если указан2021*parser\_list*2223, это должна быть последовательность строк, именующих модули, в которых есть функция2425`create_parser()`2627. Модули из2829*parser\_list*3031будут проверяться раньше модулей из списка парсеров по умолчанию.3233#### `xml.sax.parse(filename_or_stream, handler, error_handler=handler.ErrorHandler())`3435Создаёт парсер SAX и использует его для разбора документа. Документ, передаваемый в качестве3637*filename\_or\_stream*3839, может быть именем файла или файловым объектом. Параметр4041*handler*4243должен быть экземпляром SAX4445`ContentHandler`4647. Если указан4849*error\_handler*5051, он должен быть экземпляром SAX5253`ErrorHandler`5455; если опущен, при всех ошибках будет возбуждаться5657[`SAXParseException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXParseException)5859. Возвращаемого значения нет; вся работа должна выполняться переданным6061*handler*6263.6465#### `xml.sax.parseString(string, handler, error_handler=handler.ErrorHandler())`6667Аналогична6869[`parse()`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.parse)7071, но выполняет разбор из буфера7273*string*7475, переданного в качестве параметра.7677Типичное SAX-приложение использует три вида объектов: читатели, обработчики и источники входных данных. «Читатель» в этом контексте – ещё один термин для парсера, т.е. некоторый код, который читает байты или символы из источника входных данных и порождает последовательность событий. Затем эти события распределяются по объектам-обработчикам: читатель вызывает метод на обработчике. Таким образом, SAX-приложение должно получить объект-читатель, создать или открыть источники входных данных, создать обработчики и соединить все эти объекты вместе. На последнем этапе подготовки вызывается читатель для разбора входных данных. Во время разбора вызываются методы объектов-обработчиков на основе структурных и синтаксических событий из входных данных.7879Для этих объектов важны только интерфейсы; они обычно не создаются самим приложением. Поскольку в Python нет явного понятия интерфейса, они формально представлены как классы, но приложения могут использовать реализации, не наследующие от предоставленных классов. Интерфейсы `InputSource`, `Locator`, `Attributes`, `AttributesNS` и `XMLReader` определены в модуле [`xml.sax.xmlreader`](https://python-all.ru/3.1/library/xml.sax.reader.html#module-xml.sax.xmlreader). Интерфейсы обработчиков определены в [`xml.sax.handler`](https://python-all.ru/3.1/library/xml.sax.handler.html#module-xml.sax.handler). Для удобства `InputSource` (который часто создаётся напрямую) и классы обработчиков также доступны из `xml.sax`. Эти интерфейсы описаны ниже.8081В дополнение к этим классам, `xml.sax` предоставляет следующие классы исключений.8283#### `exception xml.sax.SAXException(msg, exception=None)`8485Инкапсулирует ошибку или предупреждение XML. Этот класс может содержать базовую информацию об ошибке или предупреждении как от XML-парсера, так и от приложения; он может быть подклассифицирован для добавления дополнительных возможностей или локализации. Обратите внимание: хотя обработчики, определённые в интерфейсе `ErrorHandler`, получают экземпляры этого исключения, его не требуется фактически возбуждать – он также полезен как контейнер для информации.8687При создании экземпляра *msg* должен быть читаемым описанием ошибки. Необязательный параметр *exception*, если задан, должен быть `None` или исключением, которое было перехвачено кодом разбора и передаётся как информация.8889Это базовый класс для других классов исключений SAX.9091#### `exception xml.sax.SAXParseException(msg, exception, locator)`9293Подкласс9495[`SAXException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXException)9697, возбуждаемый при ошибках разбора. Экземпляры этого класса передаются методам интерфейса SAX9899`ErrorHandler`100101для предоставления информации об ошибке разбора. Этот класс поддерживает как интерфейс SAX102103`Locator`104105, так и интерфейс106107[`SAXException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXException)108109.110111#### `exception xml.sax.SAXNotRecognizedException(msg, exception=None)`112113Подкласс114115[`SAXException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXException)116117, возбуждаемый, когда SAX118119`XMLReader`120121сталкивается с нераспознанным свойством или характеристикой. SAX-приложения и расширения могут использовать этот класс для аналогичных целей.122123#### `exception xml.sax.SAXNotSupportedException(msg, exception=None)`124125Подкласс126127[`SAXException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXException)128129, возбуждаемый, когда от SAX130131`XMLReader`132133требуется включить неподдерживаемую возможность или установить свойству значение, не поддерживаемое реализацией. SAX-приложения и расширения могут использовать этот класс для аналогичных целей.134135> **См. также**136>137> **[SAX: Простой API для XML](https://python-all.ru/3.1/library/xml.sax.html)**138>139> Этот сайт является центром определения SAX API. Он предоставляет реализацию на Java и онлайн-документацию. Также доступны ссылки на реализации и историческую информацию.140>141> **Модуль [`xml.sax.handler`](https://python-all.ru/3.1/library/xml.sax.handler.html#module-xml.sax.handler)**142>143> Определения интерфейсов для объектов, предоставляемых приложением.144>145> **Модуль [`xml.sax.saxutils`](https://python-all.ru/3.1/library/xml.sax.utils.html#module-xml.sax.saxutils)**146>147> Удобные функции для использования в SAX-приложениях.148>149> **Модуль [`xml.sax.xmlreader`](https://python-all.ru/3.1/library/xml.sax.reader.html#module-xml.sax.xmlreader)**150>151> Определения интерфейсов для объектов, предоставляемых парсером.152153## 19.7.1. Объекты SAXException154155Класс исключения [`SAXException`](https://python-all.ru/3.1/library/xml.sax.html#xml.sax.SAXException) поддерживает следующие методы:156157#### `SAXException.getMessage()`158159Возвращает понятное человеку сообщение, описывающее условие ошибки.160161#### `SAXException.getException()`162163Возвращает инкапсулированный объект исключения или164165`None`166167.168