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 и до его возврата.
По умолчанию класс также реализует метод разбора интерфейса XMLReader, используя методы feed, close и reset интерфейса IncrementalParser в качестве удобства для писателей драйверов SAX 2.0.
-
class
xml.sax.xmlreader.
Locator
¶ Интерфейс для связывания события SAX с местоположением документа. Объект локатора возвращает достоверные результаты только при вызове методов 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)¶ Установите имя функции в значение. Если функция не распознана, выдается сообщение
SAXNotRecognizedException
. Если функция или ее настройка не поддерживается синтаксическим анализатором, будет вызвано SAXNotSupportedException.
-
XMLReader.
getProperty
(propertyname)¶ Возвращает текущую настройку для свойства propertyname. Если свойство не распознано, выдается сообщение
SAXNotRecognizedException
. Известные имена свойств перечислены в модулеxml.sax.handler
.
-
XMLReader.
setProperty
(propertyname, value)¶ Установите имя свойства в значение. Если свойство не распознано, выдается сообщение
SAXNotRecognizedException
. Если свойство или его установка не поддерживается синтаксическим анализатором, то будет вызвано SAXNotSupportedException.
Объекты IncrementalParser¶
Экземпляры 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
.Кодировка должна быть строкой, допустимой для объявления кодировки XML (см. раздел 4.3.3 рекомендации XML).
Атрибут кодировки
InputSource
игнорируется, еслиInputSource
также содержит поток символов.
-
InputSource.
getEncoding
()¶ Получение кодировки символов данного InputSource.
-
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)¶ Возвращает тип атрибута name, который обычно равен
'CDATA'
.
-
Attributes.
getValue
(name)¶ Возвращает значение атрибута name.
Интерфейс AttributesNS
¶
Этот интерфейс является подтипом интерфейса Attributes
(см. раздел Интерфейс Attributes). Все методы, поддерживаемые этим интерфейсом, также доступны для объектов AttributesNS
.
Также доступны следующие методы:
-
AttributesNS.
getValueByQName
(name)¶ Возвращает значение для квалифицированного имени.
-
AttributesNS.
getNameByQName
(name)¶ Возвращает пару
(namespace, localname)
для квалифицированного имени.
-
AttributesNS.
getQNameByName
(name)¶ Возвращает квалифицированное имя для пары
(namespace, localname)
.
-
AttributesNS.
getQNames
()¶ Возвращает квалифицированные имена всех атрибутов.