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 сообщает об ошибке. См. раздел Исключения 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. Значение должно быть строкой длиной в один символ; если длина строки некорректна (
Noneсчитается тем же, что и отсутствие), то будет вызвано исключениеValueError. При включенной обработке пространств имён имена элементов и атрибутов, относящиеся к пространству имён, будут расширены. Имя элемента, переданное обработчикам элементов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для каждого документа, чтобы предоставить уникальные экземпляры парсеров.
См. также
- XML-парсер Expat
-
Главная страница проекта 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). Возможные значения flag —
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 ввёл механизм безопасности под названием «отсрочка повторного анализа», где вместо вызова отказа в обслуживании из-за квадратичного времени выполнения при повторном анализе больших токенов, повторный анализ незавершенных токенов теперь откладывается по умолчанию до достижения достаточного количества входных данных. Из-за этой задержки зарегистрированные обработчики могут — в зависимости от размера фрагментов входных данных, отправленных в Expat — больше не вызываться сразу после отправки новых входных данных в анализатор. В случаях, когда требуется немедленная обратная связь и принятие на себя ответственности за защиту от отказа в обслуживании из-за больших токенов, вызов
SetReparseDeferralEnabled(False)отключает отсрочку повторного анализа для текущего экземпляра анализатора Expat, временно или навсегда. ВызовSetReparseDeferralEnabled(True)позволяет снова включить отсрочку повторного анализа.Обратите внимание, что
SetReparseDeferralEnabled()был обратнопортирован в некоторые предыдущие версии CPython как исправление безопасности. Проверьте доступностьSetReparseDeferralEnabled()с помощьюhasattr(), если используется в коде, работающем в различных версиях Python.Добавлен в версии 3.12.3.
-
xmlparser.GetReparseDeferralEnabled() -
Возвращает, включена ли отсрочка повторного анализа для данного экземпляра анализатора Expat.
Добавлен в версии 3.12.3.
xmlparser объекты имеют следующие атрибуты:
-
xmlparser.buffer_size -
Размер буфера, используемого при
buffer_textимеет значение true. Новый размер буфера может быть установлен путём присвоения нового целого значения этому атрибуту. При изменении размера буфер будет очищен.
-
xmlparser.buffer_text -
Установка в true вызывает буферизацию текстового содержимого, возвращаемого 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, кодировки текста документа и необязательного объявления «standalone». 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 не устанавливает автономный параметр в
yesв объявлении XML. Если этот обработчик возвращает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*.
Постоянные значения ошибок Expat
Следующие константы предоставляются в модуле 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 -
Возникает, когда байт ввода не может быть правильно назначен символу; например, байт 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 -
Была найдена ссылка на параметрическую сущность, где она не допускалась.
-
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. Это никогда не должно сообщаться приложениям Python стандартной сборки модуля
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 и сущностей).
Примечания
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/pyexpat.html