xml.parsers.expat
— Быстрый синтаксический анализ XML с помощью Expat¶
Предупреждение
Модуль pyexpat
не защищен от вредоносных данных. Если вам нужно проанализировать данные, которым нельзя доверять или которые не прошли проверку подлинности, обратитесь к Важно отметить, что для модулей в пакете требуется, чтобы был доступен хотя бы один синтаксический анализатор XML, совместимый с SAX. Синтаксический анализатор Expat включен в состав Python, поэтому модуль всегда будет доступен..
Модуль xml.parsers.expat
представляет собой интерфейс на языке Python для синтаксического анализатора XML, не требующего проверки Expat. Модуль предоставляет один тип расширения xmlparser
, который представляет текущее состояние синтаксического анализатора XML. После создания объекта xmlparser
различные атрибуты объекта могут быть заданы для функций обработки. Когда XML-документ затем передается в синтаксический анализатор, функции обработки вызываются для символьных данных и разметки в XML-документе.
Этот модуль использует модуль pyexpat
для предоставления доступа к синтаксическому анализатору Expat. Прямое использование модуля pyexpat
не рекомендуется.
Этот модуль предоставляет одно исключение и один тип объекта:
- exception xml.parsers.expat.ExpatError¶
Исключение, возникающее, когда Expat сообщает об ошибке. Смотрите раздел Исключения ExpatError для получения дополнительной информации об интерпретации ошибок Expat.
- 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
Домашняя страница проекта для экспатов.
Объекты XML-анализатора¶
xmlparser
объекты имеют следующие методы:
- xmlparser.Parse(data[, isfinal])¶
Анализирует содержимое строки data, вызывая соответствующие функции-обработчики для обработки проанализированных данных. isfinal должно иметь значение true при последнем вызове этого метода; это позволяет разбирать один файл по фрагментам, а не отправлять несколько файлов. data может быть пустой строкой в любой момент.
- xmlparser.ParseFile(file)¶
Проанализируйте XML-данные, считываемые из объекта file. file должен всего лишь указать метод
read(nbytes)
, возвращающий пустую строку, когда больше нет данных.
- xmlparser.SetBase(base)¶
Устанавливает базу, которая будет использоваться для разрешения относительных URI в системных идентификаторах в объявлениях. Определение относительных идентификаторов остается за приложением: это значение будет передано в качестве базового аргумента функциям
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
вызываться не будут.Передача значения false для flag отменит предыдущий вызов, который передал значение true, но в остальном не будет иметь никакого эффекта.
Этот метод может быть вызван только перед вызовом методов
Parse()
илиParseFile()
; его вызов после вызова любого из них приводит к возникновениюExpatError
с атрибутомcode
, равнымerrors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING]
.
- xmlparser.SetReparseDeferralEnabled(enabled)¶
Предупреждение
Вызов
SetReparseDeferralEnabled(False)
имеет последствия для безопасности, как описано ниже; пожалуйста, убедитесь, что вы понимаете эти последствия, прежде чем использовать методSetReparseDeferralEnabled
.В Expat 2.6.0 введен механизм безопасности под названием «отсрочка повторной обработки», при котором вместо того, чтобы вызывать отказ в обслуживании из-за квадратичного времени выполнения при повторной обработке больших токенов, повторная обработка незавершенных токенов теперь по умолчанию откладывается до тех пор, пока не будет достигнут достаточный объем входных данных. Из—за этой задержки зарегистрированные обработчики могут — в зависимости от размера входных фрагментов, передаваемых в Expat, - больше не вызываться сразу после отправки новых входных данных в синтаксический анализатор. Когда требуется немедленная обратная связь и принятие на себя ответственности за защиту от отказа в обслуживании из-за больших токенов, вызов
SetReparseDeferralEnabled(False)
отключает отсрочку повторной обработки для текущего экземпляра Expat parser, временно или полностью. ВызовSetReparseDeferralEnabled(True)
позволяет повторно включить отсрочку повторной обработки.Обратите внимание, что
SetReparseDeferralEnabled()
был перенесен в некоторые предыдущие версии Python в качестве исправления безопасности. Проверьте наличиеSetReparseDeferralEnabled()
, используяhasattr()
, если он используется в коде, работающем на разных версиях Python.Добавлено в версии 3.11.9.
- xmlparser.GetReparseDeferralEnabled()¶
Возвращает, включена ли в данный момент отсрочка повторной обработки для данного экземпляра анализатора Expat.
Добавлено в версии 3.11.9.
xmlparser
объекты имеют следующие атрибуты:
- xmlparser.buffer_size¶
Размер буфера, используемый при значении
buffer_text
. Новый размер буфера можно задать, присвоив этому атрибуту новое целочисленное значение. При изменении размера буфер будет очищен.
- 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, используйте o.handlername = func
. handlername должно быть взято из следующего списка, а func должен быть вызываемым объектом, принимающим правильное количество аргументов. Все аргументы являются строками, если не указано иное.
- xmlparser.XmlDeclHandler(version, encoding, standalone)¶
Вызывается при анализе XML-декларации. XML-декларация - это (необязательное) объявление применимой версии рекомендации по XML, кодировка текста документа и необязательное «автономное» объявление. версии и кодирование будут строки, и автономный будут
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
значения). Если атрибут требуется указывать в экземпляре документа, значение требуется будет равно 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)¶
Вызывается для объявления нераспакованных объектов (ДАННЫХ). Это доступно только для версии 1.2 библиотеки Expat; в более поздних версиях вместо этого используйте
EntityDeclHandler
. (Базовая функция в библиотеке Expat была объявлена устаревшей.)
- xmlparser.EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName)¶
Вызывается для всех объявлений сущностей. Для параметра и внутренних сущностей value будет строкой, содержащей объявленное содержимое сущности; для внешних сущностей это будет
None
. Параметр notationName будет иметь значениеNone
для анализируемых объектов, а название обозначения - для неразборчивых объектов. is_parameter_entity будет иметь значение true, если объект является параметром entity, или false для общих объектов (большинство приложений должны иметь дело только с общими объектами). Это доступно только начиная с версии 1.95.0 библиотеки Expat.
- xmlparser.NotationDeclHandler(notationName, base, systemId, publicId)¶
Вызывается для объявления нотации. notationName, base, SystemID и publicId являются строками, если они заданы. Если идентификатор public не указан, publicId будет
None
.
- xmlparser.StartNamespaceDeclHandler(prefix, uri)¶
Вызывается, когда элемент содержит объявление пространства имен. Объявления пространства имен обрабатываются перед вызовом
StartElementHandler
для элемента, в котором размещены объявления.
- xmlparser.EndNamespaceDeclHandler(prefix)¶
Вызывается при достижении закрывающего тега для элемента, содержащего объявление пространства имен. Это вызывается один раз для каждого объявления пространства имен в элементе в порядке, обратном порядку, в котором был вызван
StartNamespaceDeclHandler
, чтобы указать начало области действия каждого объявления пространства имен. Вызовы этого обработчика выполняются после соответствующегоEndElementHandler
для конца элемента.
- xmlparser.CommentHandler(data)¶
Замечания. сведения: текст комментария, кроме ведущих
'<!-
-'
и продольный'-
->'
.
- xmlparser.StartCdataSectionHandler()¶
Вызывается в начале раздела CDATA. Это и
EndCdataSectionHandler
необходимы для определения синтаксического начала и конца разделов CDATA.
- xmlparser.EndCdataSectionHandler()¶
Вызывается в конце раздела CDATA.
- xmlparser.DefaultHandler(data)¶
Вызывается для любых символов в XML-документе, для которых не был указан соответствующий обработчик. Это означает символы, которые являются частью конструкции, о которой можно было бы сообщить, но для которой не был предоставлен обработчик.
- xmlparser.DefaultHandlerExpand(data)¶
Это то же самое, что и
DefaultHandler()
, но не препятствует расширению внутренних сущностей. Ссылка на сущность не будет передана обработчику по умолчанию.
- xmlparser.NotStandaloneHandler()¶
Вызывается, если XML-документ не был объявлен как отдельный документ. Это происходит, когда существует внешнее подмножество или ссылка на объект-параметр, но в XML-объявлении для параметра standalone не задано значение
yes
в XML-объявлении. Если этот обработчик возвращает0
, то синтаксический анализатор выдаст ошибкуXML_ERROR_NOT_STANDALONE
. Если этот обработчик не задан, синтаксический анализатор не генерирует исключение для этого условия.
- xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId)¶
Вызывается для ссылок на внешние объекты. base - это текущая база, установленная предыдущим вызовом
SetBase()
. Идентификаторы public и system, SystemID и PUBLICIDID, являются строками, если они указаны; если идентификатор 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
. Эти константы можно объединить в две группы: группу типов модели и группу квантификаторов.
Константами в группе model type являются:
- 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¶
Словарь, сопоставляющий описания строк с их кодами ошибок.
Добавлено в версии 3.2.
- xml.parsers.expat.errors.messages¶
Словарь, сопоставляющий числовые коды ошибок с их строковыми описаниями.
Добавлено в версии 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¶
Вызывается, когда входной байт не может быть должным образом назначен символу; например, нулевой байт (значение
0
) во входном потоке UTF-8.
- xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT¶
После элемента document появилось что-то отличное от пробелов.
- 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¶
Была найдена ссылка на объект параметра там, где это было запрещено.
- 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 и объектов).
Сноски