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()
нежелательно.После создания экземпляра парсер он готов немедленно начать прием данных из метода канала. После завершения парсинг необходимо вызвать метод сброса, чтобы сделать парсер готовым к приему новых данных либо из канала, либо с помощью метода синтаксического анализа.
Следует отметить, что эти методы не должны вызываться во время парсинг, то есть после вызова синтаксического анализа и до его возвращает.
По умолчанию класс также реализует метод синтаксического анализа интерфейса 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
для чтения объектов.Этот класс может включать информацию об идентификаторе public, системном идентификаторе, поток байта (возможно с информацией о символ кодировка) и/или поток символ сущности.
Приложения создадут объекты этого класса для использования в методе
XMLReader.parse()
и для возврата из EntityResolver.resolureEntity.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
или путеподнобным объектом или объектом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)¶ Разрешить приложению задавать locale ошибок и предупреждений.
парсерами SAX не требуются для локализации ошибок и предупреждений; однако, если они не могут поддержать запрошенный locale, они должны создать исключение SAX. Приложения могут запрашивать изменение locale в середине синтаксического анализа.
-
XMLReader.
getFeature
(featurename)¶ Возвращает текущую настройку для featurename элементов. Если функция не распознана,
SAXNotRecognizedException
поднимается. Известные имена элементов перечислены вxml.sax.handler
модуля.
-
XMLReader.
setFeature
(featurename, value)¶ Установите для featurename значение value. Если функция не распознана,
SAXNotRecognizedException
поднимается. Если элемент или его настройка не поддерживаются парсер, SAXNotSupportedException поднимается.
-
XMLReader.
getProperty
(propertyname)¶ Возвращает текущий параметр для propertyname свойств. Если свойство не распознано, возникает
SAXNotRecognizedException
. Известные имена свойств перечислены вxml.sax.handler
модуля.
-
XMLReader.
setProperty
(propertyname, value)¶ Установите для propertyname значение value. Если свойство не распознано,
SAXNotRecognizedException
поднимается. Если свойство или его параметр не поддерживаются парсер, SAXNotSupportedException поднимается.
Объекты IncrementalParser¶
Сущности из IncrementalParser
предлагают следующие дополнительные методы
-
IncrementalParser.
feed
(data)¶ Обработать чанк data.
-
IncrementalParser.
close
()¶ Предположить конец документа. Это позволит проверить хорошо сформированные условия, которые могут быть проверены только в конце, вызвать обработчики и может очистить ресурсы, выделенные во время парсинга.
-
IncrementalParser.
reset
()¶ Метод вызывается после вызова метода close для сброса парсер, чтобы он был готов к разбору новых документов. Результаты вызова синтаксического анализа или канала после закрытия без вызова сброса не определены.
Объекты Locator¶
Сущности из 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)¶ Задать поток байтов (двоичный файл) для этого источника ввода.
SAX парсер проигнорирует это, если также указан поток символ, но он будет использовать поток байтов вместо открытия самого соединения URI.
Если приложение знает символ кодировка потока байтов, оно должно установить его с помощью метода setEncoding.
-
InputSource.
getByteStream
()¶ Получение потока байтов для этого источника ввода.
Метод getEncoding будет возвращает символ кодировка для этого потока байтов или
None
, если неизвестно.
-
InputSource.
setCharacterStream
(charfile)¶ Задать поток символ (текстовый файл) для этого источника ввода.
Если указан поток символ, парсер SAX игнорирует любой поток байтов и не пытается открыть соединение URI с идентификатором системы.
-
InputSource.
getCharacterStream
()¶ Получение потока символ для этого источника ввода.
Интерфейс Attributes
¶
Attributes
объекты реализуют часть протокол отображения, включая
методы 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)
для квалифицированного name.
-
AttributesNS.
getQNameByName
(name)¶ Возвращает полное имя для пары
(namespace, localname)
.
-
AttributesNS.
getQNames
()¶ Возвращает полные имена всех атрибутов.