xml.parsers.expat
— Быстрый парсинг XML с помощью Expat¶
Предупреждение
Модуль pyexpat
не защищен от злонамеренно созданных данных. Если вам нужно разобрать недоверенные или неаутентифицированные данные, смотрите Уязвимости XML.
Модуль xml.parsers.expat
- это интерфейс Python для невалидирующего XML-парсера Expat. Модуль предоставляет один тип расширения xmlparser
, который представляет текущее состояние XML-парсера. После создания объекта xmlparser
различные атрибуты объекта могут быть установлены на функции-обработчики. Когда XML-документ подается на парсер, функции-обработчики вызываются для символьных данных и разметки в XML-документе.
Этот модуль использует модуль pyexpat
для обеспечения доступа к парсеру Expat. Прямое использование модуля pyexpat
устарело.
Этот модуль предоставляет одно исключение и один объект типа:
- exception xml.parsers.expat.ExpatError¶
Исключение, возникающее, когда Expat сообщает об ошибке. Дополнительные сведения об интерпретации ошибок Expat см. в разделе Исключения ExpatError.
- exception xml.parsers.expat.error¶
Псевдоним для
ExpatError
.
- xml.parsers.expat.XMLParserType¶
Тип возвращаемых значений функции
ParserCreate()
.
Модуль xml.parsers.expat
содержит две функции:
- xml.parsers.expat.ErrorString(errno)¶
Возвращает пояснительную строку для заданного номера ошибки errno.
- xml.parsers.expat.ParserCreate(encoding=None, namespace_separator=None)¶
Создает и возвращает новый объект
xmlparser
. encoding, если указано, должно быть строкой, называющей кодировку, используемую XML-данными. Expat поддерживает не так много кодировок, как Python, и его репертуар кодировок не может быть расширен; он поддерживает UTF-8, UTF-16, ISO-8859-1 (Latin1) и ASCII. Если задана encoding [1], то она переопределяет явную или неявную кодировку документа.Expat может опционально выполнять обработку пространств имен XML, что можно сделать, указав значение namespace_separator. Значение должно быть односимвольной строкой; если строка имеет недопустимую длину, будет выдан сигнал
ValueError
(None
считается равносильным пропуску). Если включена обработка пространства имен, имена типов элементов и атрибутов, принадлежащих к пространству имен, будут расширены. Имя элемента, передаваемое в обработчики элементовStartElementHandler
иEndElementHandler
, будет представлять собой конкатенацию URI пространства имен, символа-разделителя пространства имен и локальной части имени. Если разделитель пространства имен - нулевой байт (chr(0)
), то URI пространства имен и локальная часть будут скомпонованы без разделителя.Например, если namespace_separator установлен на символ пробела (
' '
) и разбирается следующий документ:<?xml version="1.0"?> <root xmlns = "http://default-namespace.org/" xmlns:py = "http://www.python.org/ns/"> <py:elem1 /> <elem2 xmlns="" /> </root>
StartElementHandler
для каждого элемента будут получены следующие строки:http://default-namespace.org/ root http://www.python.org/ns/ elem1 elem2
Из-за ограничений библиотеки
Expat
, используемойpyexpat
, возвращаемый экземплярxmlparser
может быть использован только для разбора одного XML-документа. ВызывайтеParserCreate
для каждого документа, чтобы обеспечить уникальные экземпляры парсера.
См.также
- The Expat XML Parser
Главная страница проекта Expat.
Объекты XMLParser¶
Объекты xmlparser
имеют следующие методы:
- xmlparser.Parse(data[, isfinal])¶
Разбирает содержимое строки data, вызывая соответствующие функции-обработчики для обработки разобранных данных. isfinal должен быть истинным при последнем вызове этого метода; он позволяет разбирать один файл по фрагментам, а не передавать несколько файлов. В любой момент data может быть пустой строкой.
- xmlparser.ParseFile(file)¶
Разбор XML-данных, считываемых из объекта file. От file требуется только метод
read(nbytes)
, возвращающий пустую строку, когда данных больше нет.
- xmlparser.SetBase(base)¶
Устанавливает базу, которая будет использоваться для разрешения относительных URI в системных идентификаторах в объявлениях. Разрешение относительных идентификаторов остается на усмотрение приложения: это значение будет передано в качестве аргумента base функциям
ExternalEntityRefHandler()
,NotationDeclHandler()
иUnparsedEntityDeclHandler()
.
- xmlparser.GetBase()¶
Возвращает строку, содержащую базу, установленную предыдущим вызовом
SetBase()
, илиNone
, еслиSetBase()
не был вызван.
- xmlparser.GetInputContext()¶
Возвращает входные данные, сгенерировавшие текущее событие, в виде строки. Данные передаются в кодировке сущности, содержащей текст. При вызове, когда обработчик события не активен, возвращаемое значение будет
None
.
- xmlparser.ExternalEntityParserCreate(context[, encoding])¶
Создайте «дочерний» парсер, который можно использовать для разбора внешнего парсируемого объекта, на который ссылается содержимое, разобранное родительским парсером. Параметром context должна быть строка, переданная в функцию-обработчик
ExternalEntityRefHandler()
, описанную ниже. Дочерний парсер создается с параметрамиordered_attributes
иspecified_attributes
, установленными на значения этого парсера.
- xmlparser.SetParamEntityParsing(flag)¶
Управление разбором сущностей параметров (включая внешнее подмножество DTD). Возможные значения флага:
XML_PARAM_ENTITY_PARSING_NEVER
,XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
иXML_PARAM_ENTITY_PARSING_ALWAYS
. Возвращает true, если установка флага была успешной.
- xmlparser.UseForeignDTD([flag])¶
Вызов этого параметра с истинным значением flag (по умолчанию) заставит Expat вызвать
ExternalEntityRefHandler
сNone
для всех аргументов, чтобы позволить загрузить альтернативный DTD. Если документ не содержит объявления типа документа, тоExternalEntityRefHandler
все равно будет вызвана, ноStartDoctypeDeclHandler
иEndDoctypeDeclHandler
не будут вызваны.Передача ложного значения для flag отменяет предыдущий вызов, передавший истинное значение, но в остальном не имеет никакого эффекта.
Этот метод может быть вызван только до вызова методов
Parse()
илиParseFile()
; его вызов после вызова любого из них приводит к появлениюExpatError
с атрибутомcode
, установленным вerrors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING]
.
- xmlparser.SetReparseDeferralEnabled(enabled)¶
Предупреждение
Вызов
SetReparseDeferralEnabled(False)
имеет последствия для безопасности, как описано ниже; пожалуйста, убедитесь, что вы понимаете эти последствия, прежде чем использовать методSetReparseDeferralEnabled
.В Expat 2.6.0 появился механизм безопасности под названием «reparse deferral», который вместо того, чтобы вызывать отказ в обслуживании из-за квадратичного времени выполнения при парсинге больших лексем, теперь по умолчанию откладывает парсинг незавершенных лексем до достижения достаточного количества входных данных. Из-за этой задержки зарегистрированные обработчики могут - в зависимости от размера входных фрагментов, передаваемых в Expat - больше не вызываться сразу после передачи новых входных данных парсеру. Если требуется немедленная обратная связь и принятие на себя ответственности за защиту от отказа в обслуживании из-за больших токенов, вызов
SetReparseDeferralEnabled(False)
временно или полностью отключает отсрочку репарсинга для текущего экземпляра парсера Expat. ВызовSetReparseDeferralEnabled(True)
позволяет снова включить отладку репарсинга.Обратите внимание, что
SetReparseDeferralEnabled()
был перенесен в некоторые предыдущие выпуски CPython в качестве исправления безопасности. Проверьте доступностьSetReparseDeferralEnabled()
с помощьюhasattr()
, если он используется в коде, работающем на разных версиях Python.Added in version 3.13.
- xmlparser.GetReparseDeferralEnabled()¶
Возвращает, включена ли в данный момент отсрочка репарсинга для данного экземпляра парсера Expat.
Added in version 3.13.
Объекты xmlparser
имеют следующие атрибуты:
- xmlparser.buffer_size¶
Размер буфера, используемого, когда значение
buffer_text
равно true. Новый размер буфера можно задать, присвоив этому атрибуту новое целочисленное значение. При изменении размера буфер будет очищен.
- xmlparser.buffer_text¶
Установка этого значения в true заставляет объект
xmlparser
буферизовать текстовый контент, возвращаемый Expat, чтобы избежать многократных вызовов обратного вызоваCharacterDataHandler()
, когда это возможно. Это может существенно повысить производительность, поскольку Expat обычно разбивает символьные данные на фрагменты при каждом завершении строки. По умолчанию этот атрибут равен false, и может быть изменен в любое время. Обратите внимание, что при значении false данные, не содержащие новых строк, также могут быть разбиты на фрагменты.
- xmlparser.buffer_used¶
Если включен
buffer_text
, то количество байтов, хранящихся в буфере. Эти байты представляют собой текст в кодировке UTF-8. Этот атрибут не имеет смысловой интерпретации, еслиbuffer_text
равен false.
- xmlparser.ordered_attributes¶
Установка этого атрибута в ненулевое целое число приводит к тому, что атрибуты будут представлены в виде списка, а не словаря. Атрибуты представляются в том порядке, в котором они расположены в тексте документа. Для каждого атрибута представлено два элемента списка: имя атрибута и значение атрибута. (В старых версиях модуля также использовался этот формат). По умолчанию этот атрибут равен false; он может быть изменен в любое время.
- xmlparser.specified_attributes¶
Если установить ненулевое целое число, синтаксический анализатор будет сообщать только о тех атрибутах, которые были указаны в экземпляре документа, а не о тех, которые были получены из деклараций атрибутов. Приложениям, устанавливающим это значение, необходимо быть особенно внимательными, чтобы использовать дополнительную информацию, доступную из деклараций, в соответствии со стандартами поведения XML-процессоров. По умолчанию этот атрибут равен false; он может быть изменен в любое время.
Следующие атрибуты содержат значения, относящиеся к самой последней ошибке, с которой столкнулся объект xmlparser
, и будут иметь правильные значения только после того, как вызов Parse()
или ParseFile()
вызовет исключение xml.parsers.expat.ExpatError
.
- xmlparser.ErrorByteIndex¶
Индекс байта, в котором произошла ошибка.
- xmlparser.ErrorCode¶
Числовой код, определяющий проблему. Это значение может быть передано функции
ErrorString()
или сравнено с одной из констант, определенных в объектеerrors
.
- xmlparser.ErrorColumnNumber¶
Номер столбца, в котором произошла ошибка.
- xmlparser.ErrorLineNumber¶
Номер строки, в которой произошла ошибка.
Следующие атрибуты содержат значения, относящиеся к текущему местоположению разбора в объекте xmlparser
. Во время обратного вызова, сообщающего о событии разбора, они указывают местоположение первого из последовательности символов, породивших это событие. При вызове вне обратного вызова указанная позиция будет находиться сразу после последнего события разбора (независимо от того, был ли связан с ним обратный вызов).
- xmlparser.CurrentByteIndex¶
Текущий индекс байта на входе парсера.
- xmlparser.CurrentColumnNumber¶
Номер текущего столбца во входных данных парсера.
- xmlparser.CurrentLineNumber¶
Номер текущей строки во входных данных парсера.
Вот список обработчиков, которые можно установить. Чтобы установить обработчик на объект xmlparser
о, используйте o.handlername = func
. Имя обработчика должно быть взято из следующего списка, а func должен быть вызываемым объектом, принимающим нужное количество аргументов. Все аргументы являются строками, если не указано иное.
- xmlparser.XmlDeclHandler(version, encoding, standalone)¶
Вызывается при разборе декларации XML. XML-декларация - это (необязательное) объявление применимой версии XML-рекомендации, кодировки текста документа и необязательное объявление «автономного» документа. version и encoding будут строками, а standalone будет
1
, если документ объявлен автономным,0
, если он объявлен не автономным, или-1
, если пункт об автономности был опущен. Это доступно только в Expat версии 1.95.0 или более новой.
- xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset)¶
Вызывается, когда Expat начинает разбирать объявление типа документа (
<!DOCTYPE ...
). Параметр doctypeName передается в том виде, в котором он представлен. Параметры systemId и publicId задают системный и публичный идентификаторы, если они указаны, илиNone
, если опущены. Параметр has_internal_subset будет равен true, если документ содержит внутреннее подмножество декларации документа. Для этого требуется Expat версии 1.2 или новее.
- xmlparser.EndDoctypeDeclHandler()¶
Вызывается, когда Expat завершает разбор объявления типа документа. Для этого требуется Expat версии 1.2 или новее.
- xmlparser.ElementDeclHandler(name, model)¶
Вызывается один раз для каждого объявления типа элемента. name - это имя типа элемента, а model - представление модели содержимого.
- xmlparser.AttlistDeclHandler(elname, attname, type, default, required)¶
Вызывается для каждого объявленного атрибута типа элемента. Если в объявлении списка атрибутов объявлено три атрибута, этот обработчик вызывается три раза, по одному разу для каждого атрибута. elname - это имя элемента, к которому относится объявление, а attname - это имя объявленного атрибута. Тип атрибута - это строка, переданная как type; возможные значения:
'CDATA'
,'ID'
,'IDREF'
, … default дает значение по умолчанию для атрибута, используемое, когда атрибут не указан в экземпляре документа, илиNone
, если значение по умолчанию отсутствует (значения``#IMPLIED``). Если атрибут должен быть указан в экземпляре документа, значение required будет равно true. Для этого требуется Expat версии 1.95.0 или новее.
- xmlparser.StartElementHandler(name, attributes)¶
Вызывается в начале каждого элемента. name - строка, содержащая имя элемента, а attributes - атрибуты элемента. Если
ordered_attributes
равен true, это список (см.ordered_attributes
для полного описания). В противном случае это словарь, отображающий имена на значения.
- xmlparser.EndElementHandler(name)¶
Вызывается в конце каждого элемента.
- xmlparser.ProcessingInstructionHandler(target, data)¶
Вызывается для каждой инструкции обработки.
- xmlparser.CharacterDataHandler(data)¶
Вызывается для символьных данных. Вызывается для обычных символьных данных, содержимого, помеченного CDATA, и игнорируемых пробельных символов. Приложения, которым необходимо различать эти случаи, могут использовать обратные вызовы
StartCdataSectionHandler
,EndCdataSectionHandler
иElementDeclHandler
для сбора необходимой информации. Обратите внимание, что символьные данные могут быть разбиты на куски, даже если они короткие, и поэтому вы можете получить более одного вызоваCharacterDataHandler()
. Чтобы избежать этого, установите для атрибута экземпляраbuffer_text
значениеTrue
.
- xmlparser.UnparsedEntityDeclHandler(entityName, base, systemId, publicId, notationName)¶
Вызывается для непарсированных (NDATA) объявлений сущностей. Эта функция присутствует только в версии 1.2 библиотеки Expat; для более поздних версий используйте вместо нее
EntityDeclHandler
. (Базовая функция в библиотеке Expat была объявлена устаревшей).
- xmlparser.EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName)¶
Вызывается для всех объявлений сущностей. Для параметра и внутренних сущностей value будет строкой, передающей объявленное содержимое сущности; для внешних сущностей это будет
None
. Параметр notationName будетNone
для разобранных сущностей и имя нотации для неразобранных сущностей. Параметр is_parameter_entity будет равен true, если сущность является параметрической сущностью, или false для общих сущностей (большинство приложений должны иметь дело только с общими сущностями). Это доступно только начиная с версии 1.95.0 библиотеки Expat.
- xmlparser.NotationDeclHandler(notationName, base, systemId, publicId)¶
Вызывается для объявлений нотаций. notationName, base и systemId, а также publicId являются строками, если они заданы. Если публичный идентификатор опущен, publicId будет
None
.
- xmlparser.StartNamespaceDeclHandler(prefix, uri)¶
Вызывается, когда элемент содержит объявление пространства имен. Объявления пространств имен обрабатываются до вызова
StartElementHandler
для элемента, на котором размещены объявления.
- xmlparser.EndNamespaceDeclHandler(prefix)¶
Вызывается при достижении закрывающего тега для элемента, содержащего объявление пространства имен. Он вызывается один раз для каждого объявления пространства имен в элементе в порядке, обратном порядку вызова
StartNamespaceDeclHandler
, чтобы указать начало области действия каждого объявления пространства имен. Вызовы этого обработчика выполняются после соответствующегоEndElementHandler
для конца элемента.
- xmlparser.CommentHandler(data)¶
Вызывается для комментариев. data - это текст комментария, исключая ведущие
'<!-
-'
и последующие'-
->'
.
- xmlparser.StartCdataSectionHandler()¶
Вызывается в начале раздела CDATA. Это и
EndCdataSectionHandler
нужны для того, чтобы можно было определить синтаксическое начало и конец секций CDATA.
- xmlparser.EndCdataSectionHandler()¶
Вызывается в конце раздела CDATA.
- xmlparser.DefaultHandler(data)¶
Вызывается для любых символов в XML-документе, для которых не был указан применимый обработчик. Это означает символы, которые являются частью конструкции, о которой можно сообщить, но для которой не был указан обработчик.
- xmlparser.DefaultHandlerExpand(data)¶
Это то же самое, что и
DefaultHandler()
, но не препятствует расширению внутренних сущностей. Ссылка на сущность не будет передана в обработчик по умолчанию.
- xmlparser.NotStandaloneHandler()¶
Вызывается, если XML-документ не был объявлен как самостоятельный. Это происходит, когда имеется внешнее подмножество или ссылка на сущность с параметрами, но в XML-декларации для параметра standalone не установлено значение
yes
. Если этот обработчик возвращает значение0
, то синтаксический анализатор выдает ошибкуXML_ERROR_NOT_STANDALONE
. Если этот обработчик не установлен, то парсер не вызовет исключения для этого условия.
- xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId)¶
Вызывается для ссылок на внешние сущности. base - это текущая база, установленная предыдущим вызовом
SetBase()
. Идентификаторы public и system, systemId и publicId, являются строками, если они указаны; если идентификатор public не указан, publicId будетNone
. Значение context является непрозрачным и должно использоваться только так, как описано ниже.Для разбора внешних сущностей должен быть реализован этот обработчик. Он отвечает за создание субпарсера с помощью
ExternalEntityParserCreate(context)
, инициализацию его соответствующими обратными вызовами и парсинг сущности. Этот обработчик должен возвращать целое число; если он возвращает0
, парсер выдает ошибкуXML_ERROR_EXTERNAL_ENTITY_HANDLING
, в противном случае парсинг продолжается.Если этот обработчик не указан, о внешних сущностях сообщает обратный вызов
DefaultHandler
, если он предусмотрен.
Исключения ExpatError¶
Исключения ExpatError
обладают рядом интересных свойств:
- ExpatError.code¶
Внутренний номер ошибки Expat для конкретной ошибки. Словарь
errors.messages
сопоставляет эти номера ошибок с сообщениями об ошибках Expat. Например:from xml.parsers.expat import ParserCreate, ExpatError, errors p = ParserCreate() try: p.Parse(some_xml_document) except ExpatError as err: print("Error:", errors.messages[err.code])
Модуль
errors
также предоставляет константы сообщений об ошибках и словарьcodes
, отображающий эти сообщения на коды ошибок, см. ниже.
- ExpatError.lineno¶
Номер строки, на которой была обнаружена ошибка. Первая строка нумеруется
1
.
- ExpatError.offset¶
Смещение символа в строке, в которой произошла ошибка. Первый столбец нумеруется
0
.
Пример¶
В следующей программе определены три обработчика, которые просто выводят свои аргументы.
import xml.parsers.expat
# 3 handler functions
def start_element(name, attrs):
print('Start element:', name, attrs)
def end_element(name):
print('End element:', name)
def char_data(data):
print('Character data:', repr(data))
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data
p.Parse("""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>""", 1)
Выходные данные этой программы:
Start element: parent {'id': 'top'}
Start element: child1 {'name': 'paul'}
Character data: 'Text goes here'
End element: child1
Character data: '\n'
Start element: child2 {'name': 'fred'}
Character data: 'More text'
End element: child2
Character data: '\n'
End element: parent
Описания моделей содержимого¶
Модели содержимого описываются с помощью вложенных кортежей. Каждый кортеж содержит четыре значения: тип, квантификатор, имя и кортеж дочерних элементов. Дочерние элементы - это просто дополнительные описания моделей содержимого.
Значения первых двух полей - это константы, определенные в модуле xml.parsers.expat.model
. Эти константы можно собрать в две группы: группу типов моделей и группу квантификаторов.
Константами в группе типов моделей являются:
- xml.parsers.expat.model.XML_CTYPE_ANY
Элемент, названный именем модели, был объявлен как имеющий модель содержимого
ANY
.
- xml.parsers.expat.model.XML_CTYPE_CHOICE
Именованный элемент позволяет выбрать один из нескольких вариантов; он используется для моделей содержимого, таких как
(A | B | C)
.
- xml.parsers.expat.model.XML_CTYPE_EMPTY
Элементы, которые объявлены как
EMPTY
, имеют этот тип модели.
- xml.parsers.expat.model.XML_CTYPE_MIXED
- xml.parsers.expat.model.XML_CTYPE_NAME
- xml.parsers.expat.model.XML_CTYPE_SEQ
Модели, представляющие собой серию моделей, следующих одна за другой, обозначаются этим типом модели. Он используется для таких моделей, как
(A, B, C)
.
В группу квантификаторов входят следующие константы:
- xml.parsers.expat.model.XML_CQUANT_NONE
Модификатор не задается, поэтому он может появиться ровно один раз, как для
A
.
- xml.parsers.expat.model.XML_CQUANT_OPT
Модель необязательна: она может появиться один раз или не появиться вовсе, как в случае с
A?
.
- xml.parsers.expat.model.XML_CQUANT_PLUS
Модель должна встречаться один или несколько раз (например,
A+
).
- xml.parsers.expat.model.XML_CQUANT_REP
Модель должна встречаться ноль или более раз, как для
A*
.
Константы ошибок экспатов¶
В модуле xml.parsers.expat.errors
предусмотрены следующие константы. Эти константы полезны для интерпретации некоторых атрибутов объектов исключений ExpatError
, поднимаемых при возникновении ошибки. Поскольку по соображениям обратной совместимости значением констант является сообщение об ошибке, а не числовой код ошибки, для этого нужно сравнить атрибут code
с errors.codes[errors.XML_ERROR_CONSTANT_NAME]
.
Модуль errors
имеет следующие атрибуты:
- xml.parsers.expat.errors.codes¶
Словарь, сопоставляющий описания строк с их кодами ошибок.
Added in version 3.2.
- xml.parsers.expat.errors.messages¶
Словарь, отображающий числовые коды ошибок на их строковые описания.
Added in version 3.2.
- xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY¶
- xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF¶
Ссылка на сущность в значении атрибута относится к внешней, а не внутренней сущности.
- xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF¶
Символьная ссылка ссылается на символ, который является недопустимым в XML (например, символ
0
или „�
“).
- xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF¶
Ссылка на сущность ссылалась на сущность, которая была объявлена с помощью нотации, поэтому не может быть разобрана.
- xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE¶
Атрибут был использован в начальном теге более одного раза.
- xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING¶
- xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN¶
Возникает, когда входной байт не может быть правильно присвоен символу; например, байт NUL (значение
0
) во входном потоке UTF-8.
- xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT¶
После элемента документа появилось что-то, отличное от пробельных символов.
- xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI¶
Объявление XML было найдено не в начале входных данных.
- xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS¶
Документ не содержит элементов (XML требует, чтобы все документы содержали ровно один элемент верхнего уровня).
- xml.parsers.expat.errors.XML_ERROR_NO_MEMORY¶
Expat не смог выделить внутреннюю память.
- xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF¶
Ссылка на параметр entity была найдена там, где она не разрешена.
- xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR¶
Во входных данных был обнаружен неполный символ.
- xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF¶
Ссылка на сущность содержит другую ссылку на ту же самую сущность; возможно, через другое имя, а возможно, и косвенно.
- xml.parsers.expat.errors.XML_ERROR_SYNTAX¶
Возникла неопределенная синтаксическая ошибка.
- xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH¶
Конечный тег не совпадает с самым внутренним открытым начальным тегом.
- xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN¶
Какой-то маркер (например, тег начала) не был закрыт до конца потока или до появления следующего маркера.
- xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY¶
Была сделана ссылка на сущность, которая не была определена.
- xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING¶
Кодировка документа не поддерживается Expat.
- xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION¶
Секция, помеченная CDATA, не была закрыта.
- xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING¶
- xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE¶
Парсер определил, что документ не является «автономным», хотя он объявил себя таковым в XML-декларации, и
NotStandaloneHandler
был установлен и возвращен0
.
- xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE¶
- xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE¶
- xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD¶
Была запрошена операция, требующая компиляции поддержки DTD, но Expat был настроен без поддержки DTD. Об этом никогда не должна сообщать стандартная сборка модуля
xml.parsers.expat
.
- xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING¶
После начала парсинга было запрошено изменение поведения, которое может быть изменено только до начала парсинга. Это (в настоящее время) может быть вызвано только
UseForeignDTD()
.
- xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX¶
При включенной обработке пространства имен был обнаружен необъявленный префикс.
- xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX¶
В документе была предпринята попытка удалить объявление пространства имен, связанное с префиксом.
- xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE¶
Сущность параметра содержала неполную разметку.
- xml.parsers.expat.errors.XML_ERROR_XML_DECL¶
Документ не содержал ни одного элемента документа.
- xml.parsers.expat.errors.XML_ERROR_TEXT_DECL¶
Возникла ошибка при разборе текстового объявления во внешней сущности.
- xml.parsers.expat.errors.XML_ERROR_PUBLICID¶
В публичном идентификаторе были найдены символы, которые недопустимы.
- xml.parsers.expat.errors.XML_ERROR_SUSPENDED¶
Запрошенная операция была выполнена на приостановленном парсере, но не разрешена. Сюда относятся попытки предоставить дополнительный ввод или остановить парсер.
- xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED¶
Попытка возобновить работу парсера была предпринята, когда работа парсера не была приостановлена.
- xml.parsers.expat.errors.XML_ERROR_ABORTED¶
Об этом не следует сообщать приложениям Python.
- xml.parsers.expat.errors.XML_ERROR_FINISHED¶
Запрошенная операция была выполнена на парсере, который закончил разбор входных данных, но не может быть разрешен. Сюда относятся попытки предоставить дополнительный ввод или остановить парсер.
- xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE¶
- xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XML¶
Была предпринята попытка отменить объявление зарезервированного префикса пространства имен
xml
или связать его с другим URI пространства имен.
- xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNS¶
Была предпринята попытка объявить или необъявить зарезервированный префикс пространства имен
xmlns
.
- xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URI¶
Была предпринята попытка связать URI одного из зарезервированных префиксов пространства имен
xml
иxmlns
с другим префиксом пространства имен.
- xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENT¶
Об этом не следует сообщать приложениям Python.
- xml.parsers.expat.errors.XML_ERROR_NO_BUFFER¶
Об этом не следует сообщать приложениям Python.
- xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACH¶
Предел входного коэффициента усиления (из DTD и сущностей) был нарушен.
Сноски