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. Значение должно быть строкой из одного символа; будет поднято
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для каждого документа, чтобы предоставить уникальные экземпляры парсеров.
См. также
- Парсер XML Expat
-
Главная страница проекта Expat.
Объекты XMLParser
xmlparser объекты имеют следующие методы:
-
xmlparser.Parse(data[, isfinal]) -
Парсит содержимое строки data, вызывая соответствующие обработчики функций для обработки проанализированных данных. isfinal должно быть установлено в значение true при последнем вызове этого метода; это позволяет парсить один файл фрагментами, а не загружать несколько файлов. data может быть пустой строкой в любое время.
-
xmlparser.ParseFile(file) -
Парсит данные XML, считывая их из объекта file. file должен только предоставлять метод
read(nbytes), возвращающий пустую строку, когда больше нет данных.
-
xmlparser.SetBase(base) -
Устанавливает базовый URL, который используется для разрешения относительных URI в идентификаторах систем в объявлениях. Разрешение относительных идентификаторов оставлено на усмотрение приложения: это значение будет передано в качестве аргумента base функциям
ExternalEntityRefHandler(),NotationDeclHandler()иUnparsedEntityDeclHandler().
-
xmlparser.GetBase() -
Возвращает строку, содержащую базовый URL, установленный в предыдущем вызове
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]) -
Вызов этого метода со значением true для 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, временно или навсегда. ВызовSetReparseDeferralEnabled(True)позволяет снова включить отложенный повторный анализ.Обратите внимание, что
SetReparseDeferralEnabled()был перенесён на некоторые предыдущие версии CPython как исправление уязвимости. Проверьте доступностьSetReparseDeferralEnabled()с помощьюhasattr(), если используется код, работающий на различных версиях Python.Добавлен в версии 3.13.
-
xmlparser.GetReparseDeferralEnabled() -
Возвращает, включён ли отложенный повторный анализ для данного экземпляра анализатора Expat.
Добавлен в версии 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-процессоров.
Следующие атрибуты содержат значения, относящиеся к последней ошибке, обнаруженной объектом 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) -
Вызывается при начале разбора декларации типа документа (
<!DOCTYPE ...). doctypeName передаётся точно так, как представлен. Параметры systemId и publicId предоставляют системный и публичный идентификаторы, если они указаны, илиNoneесли опущены. has_internal_subset будет истинным, если документ содержит внутренний подмножество декларации документа. Требуется Expat версии 1.2 или новее.
-
xmlparser.EndDoctypeDeclHandler() -
Вызывается после завершения разбора декларации типа документа. Требуется 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истинно, это список (см.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 будет истинным, если сущность является параметром сущности, или ложным для общих сущностей (большинству приложений нужны только общие сущности). Доступно только начиная с версии 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(). Идентификаторы systemId и publicId — строки, если они заданы; если общественный идентификатор не задан, 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. Это никогда не должно отображаться в стандартной сборке модуля
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 -
В идентификаторе public были обнаружены недопустимые символы.
-
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.13/library/pyexpat.html