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, или „&#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 и объектов).

Сноски

Вернуться на верх