xml.sax.xmlreader
— Интерфейс для синтаксических анализаторов XML¶
Исходный код: Lib/xml/sax/xmlreader.py
Синтаксические анализаторы SAX реализуют интерфейс XMLReader
. Они реализованы в модуле Python, который должен предоставлять функцию create_parser()
. Эта функция вызывается xml.sax.make_parser()
без аргументов для создания нового объекта синтаксического анализа.
- class xml.sax.xmlreader.XMLReader¶
Базовый класс, который может быть унаследован синтаксическими анализаторами SAX.
- class xml.sax.xmlreader.IncrementalParser¶
В некоторых случаях желательно не анализировать источник входных данных сразу, а загружать фрагменты документа по мере их поступления. Обратите внимание, что программа чтения, как правило, читает не весь файл, а также его фрагменты; однако
parse()
не возвращается, пока не будет обработан весь документ. Таким образом, эти интерфейсы следует использовать, если нежелательно блокирующее поведениеparse()
.Когда синтаксический анализатор создан, он готов немедленно начать принимать данные из метода feed. После завершения синтаксического анализа с вызовом close необходимо вызвать метод reset, чтобы синтаксический анализатор был готов к приему новых данных либо из feed, либо с использованием метода parse.
Обратите внимание, что эти методы не должны вызываться во время синтаксического анализа, то есть после вызова parse и до его возврата.
По умолчанию класс также реализует метод parse интерфейса XmlReader, используя методы feed, close и reset интерфейса IncrementalParser для удобства разработчиков драйверов SAX 2.0.
- class xml.sax.xmlreader.Locator¶
Интерфейс для привязки события SAX к местоположению документа. Объект locator возвращает корректные результаты только при вызове методов DocumentHandler; в любое другое время результаты непредсказуемы. Если информация недоступна, методы могут возвращать
None
.
- class xml.sax.xmlreader.InputSource(system_id=None)¶
Инкапсуляция информации, необходимой
XMLReader
для чтения сущностей.Этот класс может включать в себя информацию об общедоступном идентификаторе, системном идентификаторе, потоке байтов (возможно, с информацией о кодировке символов) и/или потоке символов объекта.
Приложения будут создавать объекты этого класса для использования в методе
XMLReader.parse()
и для возврата из EntityResolver.resolveEntity.InputSource
принадлежит приложению,XMLReader
не разрешается изменятьInputSource
объекты, переданные ему из приложения, хотя оно может создавать их копии и изменять их.
- class xml.sax.xmlreader.AttributesImpl(attrs)¶
Это реализация интерфейса
Attributes
(см. раздел Интерфейс Attributes). Это объект, подобный словарю, который представляет атрибуты элемента в вызовеstartElement()
. В дополнение к наиболее полезным операциям со словарем, он поддерживает ряд других методов, описанных в интерфейсе. Объекты этого класса должны создаваться средствами чтения; attrs должен быть словообразовательным объектом, содержащим сопоставление имен атрибутов со значениями атрибутов.
- class xml.sax.xmlreader.AttributesNSImpl(attrs, qnames)¶
Зависящий от пространства имен вариант
AttributesImpl
, который будет передан вstartElementNS()
. Он является производным отAttributesImpl
, но понимает имена атрибутов как два кортежа из namespaceURI и localname. Кроме того, он предоставляет ряд методов, ожидающих полные имена в том виде, в каком они указаны в исходном документе. Этот класс реализует интерфейсAttributesNS
(см. раздел Интерфейс AttributesNS).
Объекты XmlReader¶
Интерфейс XMLReader
поддерживает следующие методы:
- XMLReader.parse(source)¶
Обрабатывайте источник входных данных, создавая события SAX. Объектом source может быть системный идентификатор (строка, идентифицирующая источник входных данных - обычно это имя файла или URL-адрес), объект
pathlib.Path
или path-like, или объектInputSource
. Когдаparse()
возвращается, входные данные полностью обрабатываются, и объект синтаксического анализа может быть отброшен или сброшен заново.Изменено в версии 3.5: Добавлена поддержка потоков символов.
Изменено в версии 3.8: Добавлена поддержка объектов, похожих на контуры.
- XMLReader.getContentHandler()¶
Верните текущее значение
ContentHandler
.
- XMLReader.setContentHandler(handler)¶
Установите текущее значение
ContentHandler
. Если значениеContentHandler
не задано, события содержимого будут отменены.
- XMLReader.getDTDHandler()¶
Верните текущее значение
DTDHandler
.
- XMLReader.setDTDHandler(handler)¶
Установите текущее значение
DTDHandler
. Если значениеDTDHandler
не задано, события DTD будут отменены.
- XMLReader.getEntityResolver()¶
Верните текущее значение
EntityResolver
.
- XMLReader.setEntityResolver(handler)¶
Установите текущее значение
EntityResolver
. Если не задано значениеEntityResolver
, попытки разрешить внешнюю сущность приведут к открытию системного идентификатора для этой сущности и завершатся неудачей, если он недоступен.
- XMLReader.getErrorHandler()¶
Верните текущее значение
ErrorHandler
.
- XMLReader.setErrorHandler(handler)¶
Установите текущий обработчик ошибок. Если значение
ErrorHandler
не задано, ошибки будут отображаться как исключения и будут выводиться предупреждения.
- XMLReader.setLocale(locale)¶
Разрешите приложению устанавливать языковой стандарт для ошибок и предупреждений.
Синтаксические анализаторы SAX не обязаны обеспечивать локализацию ошибок и предупреждений; однако, если они не могут поддерживать запрошенный языковой стандарт, они должны генерировать исключение SAX. Приложения могут запросить изменение языкового стандарта в середине синтаксического анализа.
- XMLReader.getFeature(featurename)¶
Возвращает текущее значение для объекта featurename. Если объект не распознается, выводится значение
SAXNotRecognizedException
. Известные названия объектов перечислены в модулеxml.sax.handler
.
- XMLReader.setFeature(featurename, value)¶
Задайте для параметра featurename значение . Если функция не распознается, выводится значение :exc:`SAXNotRecognizedException`. Если функция или ее настройка не поддерживаются синтаксическим анализатором, выводится исключение *SAXNotSupportedException.
- XMLReader.getProperty(propertyname)¶
Возвращает текущее значение для свойства propertyname. Если свойство не распознано, выводится значение
SAXNotRecognizedException
. Известные имена свойств перечислены в модулеxml.sax.handler
.
- XMLReader.setProperty(propertyname, value)¶
Задайте для параметра propertyname значение . Если свойство не распознается, вызывается значение :exc:`SAXNotRecognizedException`. Если свойство или его параметр не поддерживаются синтаксическим анализатором, вызывается исключение *SAXNotSupportedException.
Объекты инкрементного анализатора¶
Экземпляры IncrementalParser
предлагают следующие дополнительные методы:
- IncrementalParser.feed(data)¶
Обработайте фрагмент данных.
- IncrementalParser.close()¶
Предположим, что это конец документа. Это проверит условия корректности оформления, которые могут быть проверены только в конце, вызовет обработчики и может очистить ресурсы, выделенные во время синтаксического анализа.
- IncrementalParser.reset()¶
Этот метод вызывается после вызова close, чтобы перезагрузить синтаксический анализатор, чтобы он был готов к анализу новых документов. Результаты вызова parse или feed после close без вызова reset не определены.
Объекты-локаторы¶
Экземпляры Locator
предоставляют следующие методы:
- Locator.getColumnNumber()¶
Возвращает номер столбца, с которого начинается текущее событие.
- Locator.getLineNumber()¶
Возвращает номер строки, с которой начинается текущее событие.
- Locator.getPublicId()¶
Возвращает общедоступный идентификатор для текущего события.
- Locator.getSystemId()¶
Возвращает системный идентификатор для текущего события.
Объекты InputSource¶
- InputSource.setPublicId(id)¶
Устанавливает открытый идентификатор этого
InputSource
.
- InputSource.getPublicId()¶
Возвращает открытый идентификатор этого
InputSource
.
- InputSource.setSystemId(id)¶
Устанавливает системный идентификатор этого
InputSource
.
- InputSource.getSystemId()¶
Возвращает системный идентификатор этого
InputSource
.
- InputSource.setEncoding(encoding)¶
Задает кодировку символов этого
InputSource
.Задает кодировку символов этого .
Задает кодировку символов этого
InputSource
InputSource
.
- InputSource.getEncoding()¶
Получите кодировку символов этого источника ввода.
- InputSource.setByteStream(bytefile)¶
Установите поток байтов (a binary file) для этого источника входных данных.
Синтаксический анализатор SAX проигнорирует это, если также указан поток символов, но он предпочтет использовать поток байтов, а не само открытие соединения URI.
Если приложение знает кодировку символов потока байтов, оно должно установить ее с помощью метода setEncoding.
- InputSource.getByteStream()¶
Получите поток байтов для этого источника входных данных.
Метод GetEncoding вернет кодировку символов для этого потока байтов или
None
, если она неизвестна.
- InputSource.setCharacterStream(charfile)¶
Установите поток символов (a text file) для этого источника ввода.
Если указан поток символов, синтаксический анализатор SAX проигнорирует любой поток байтов и не будет пытаться установить URI-соединение с системным идентификатором.
- InputSource.getCharacterStream()¶
Получите поток символов для этого источника ввода.
Интерфейс Attributes
¶
объекты Attributes
реализуют часть mapping protocol, включая методы copy()
, get()
, __contains__()
, items()
, keys()
и values()
. Также предусмотрены следующие методы:
- Attributes.getLength()¶
объекты реализуют часть , включая методы , , , , и . Также предусмотрены следующие методы:
- Attributes.getNames()¶
объекты реализуют часть , включая методы , , , , и . Также предусмотрены следующие методы:
- Attributes.getType(name)¶
объекты
'CDATA'
реализуют часть , включая методы , , , , и . Также предусмотрены следующие методы:
- Attributes.getValue(name)¶
объекты реализуют часть , включая методы , , , , и . Также предусмотрены следующие методы:
Интерфейс AttributesNS
¶
Интерфейс <<<0>> Интерфейс Attributes AttributesNS
>
Также доступны следующие методы:
- AttributesNS.getValueByQName(name)¶
Также доступны следующие методы:
- AttributesNS.getNameByQName(name)¶
Верните пару
(namespace, localname)
для полного имени.
- AttributesNS.getQNameByName(name)¶
Верните пару
(namespace, localname)
для полного имени.
- AttributesNS.getQNames()¶
Верните пару для полного имени.