xml.parsers.expat — Быстрый разбор XML с помощью Expat
Предупреждение
Модуль pyexpat не защищён от данных, сформированных злоумышленниками. Если вам нужно анализировать недоверенные данные или данные, источник которых не подтверждён, см. раздел Уязвимости XML.
Модуль xml.parsers.expat — это интерфейс Python к непроверяющему корректность XML-парсеру Expat. Модуль предоставляет один тип расширения — xmlparser, который представляет текущее состояние XML-парсера. После создания объекта xmlparser для различных атрибутов объекта можно задать функции-обработчики. Когда XML-документ передаётся парсеру, функции-обработчики вызываются для символьных данных и разметки в XML-документе.
Этот модуль использует модуль pyexpat для доступа к парсеру Expat. Прямое использование модуля pyexpat объявлено устаревшим.
Этот модуль предоставляет одно исключение и один объект типа:
-
exception xml.parsers.expat.ExpatError -
Исключение, возникающее при сообщении Expat об ошибке. Дополнительные сведения об интерпретации ошибок Expat см. в разделе Исключения ExpatError.
-
exception xml.parsers.expat.error -
Псевдоним для
ExpatError.
-
xml.parsers.expat.XMLParserType -
Тип возвращаемых значений функции
ParserCreate().
Модуль xml.parsers.expat содержит две функции:
-
xml.parsers.expat.ErrorString(errno) -
Возвращает поясняющую строку для заданного номера ошибки errno.
-
xml.parsers.expat.ParserCreate(encoding=None, namespace_separator=None) -
Создаёт и возвращает новый объект
xmlparser. Если указан параметр encoding, он должен быть строкой с названием кодировки, используемой XML-данными. Expat поддерживает меньше кодировок, чем Python, и расширить набор поддерживаемых кодировок нельзя; поддерживаются UTF-8, UTF-16, ISO-8859-1 (Latin1) и ASCII. Если задан параметр encoding [1], он переопределяет неявную или явную кодировку документа.При необходимости Expat может выполнять обработку пространств имён XML; для этого нужно задать значение параметра namespace_separator. Значение должно быть строкой из одного символа; если длина строки недопустима (
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]) -
Вызов метода со значением 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 в качестве исправления безопасности. Если код должен работать в разных версиях Python, проверяйте наличиеSetReparseDeferralEnabled()с помощьюhasattr().Добавлено в версии 3.12.3.
-
xmlparser.GetReparseDeferralEnabled() -
Возвращает информацию о том, включён ли в данный момент отложенный повторный разбор для указанного экземпляра анализатора Expat.
Добавлено в версии 3.12.3.
Объекты xmlparser имеют следующие атрибуты:
-
xmlparser.buffer_size -
Размер буфера, используемого, когда
buffer_textимеет значение true. Новый размер буфера можно задать, присвоив этому атрибуту новое целочисленное значение. При изменении размера буфер будет очищен.
-
xmlparser.buffer_text -
Если установить этому атрибуту значение true, объект
xmlparserбудет буферизовать текстовое содержимое, возвращаемое Expat, чтобы по возможности избежать нескольких вызовов обратного вызоваCharacterDataHandler(). Это может значительно повысить производительность, поскольку обычно Expat разбивает символьные данные на фрагменты при каждом переводе строки. По умолчанию этот атрибут имеет значение false; его можно изменить в любой момент. Обратите внимание, что при значении false данные, не содержащие символов новой строки, также могут разбиваться на фрагменты.
-
xmlparser.buffer_used -
Если включён атрибут
buffer_text, количество байтов, хранящихся в буфере. Эти байты представляют собой текст в кодировке UTF-8. Если значениеbuffer_textравно false, этот атрибут не имеет осмысленной интерпретации.
-
xmlparser.ordered_attributes -
Если присвоить этому атрибуту ненулевое целое значение, атрибуты будут представлены списком, а не словарём. Атрибуты указываются в том порядке, в котором они встречаются в тексте документа. Для каждого атрибута приводятся два элемента списка: имя атрибута и его значение. (В старых версиях этого модуля также использовался такой формат.) По умолчанию этот атрибут имеет значение false; его можно изменить в любой момент.
-
xmlparser.specified_attributes -
Если этому атрибуту присвоено ненулевое целое значение, анализатор будет сообщать только об атрибутах, указанных в экземпляре документа, но не об атрибутах, полученных из объявлений атрибутов. Приложениям, которые включают эту настройку, следует уделять особое внимание использованию дополнительных сведений из объявлений, необходимых для соблюдения стандартов поведения XML-процессоров. По умолчанию этот атрибут имеет значение false; его можно изменить в любой момент.
Следующие атрибуты содержат значения, связанные с последней ошибкой, обнаруженной объектом xmlparser, и будут иметь корректные значения только после того, как вызов Parse() или ParseFile() приведёт к возбуждению исключения xml.parsers.expat.ExpatError.
-
xmlparser.ErrorByteIndex -
Индекс байта, в котором произошла ошибка.
-
xmlparser.ErrorCode -
Числовой код, указывающий на проблему. Это значение можно передать функции
ErrorString()или сравнить с одной из констант, определённых в объектеerrors.
-
xmlparser.ErrorColumnNumber -
Номер столбца, в котором произошла ошибка.
-
xmlparser.ErrorLineNumber -
Номер строки, в которой произошла ошибка.
Следующие атрибуты содержат значения, связанные с текущей позицией разбора в объекте xmlparser. Во время обратного вызова, сообщающего о событии разбора, они указывают позицию первого символа последовательности, вызвавшей это событие. При вызове вне обратного вызова указанная позиция будет сразу после последнего события разбора (независимо от того, был ли связан с ним обратный вызов).
-
xmlparser.CurrentByteIndex -
Текущий индекс байта во входных данных анализатора.
-
xmlparser.CurrentColumnNumber -
Текущий номер столбца во входных данных анализатора.
-
xmlparser.CurrentLineNumber -
Текущий номер строки во входных данных анализатора.
Ниже приведён список обработчиков, которые можно задать. Чтобы задать обработчик для объекта xmlparser o, используйте o.handlername = func. Значение handlername должно быть взято из следующего списка, а func должно быть вызываемым объектом, принимающим нужное количество аргументов. Все аргументы являются строками, если не указано иное.
-
xmlparser.XmlDeclHandler(version, encoding, standalone) -
Вызывается при разборе XML-объявления. XML-объявление — это необязательное указание применимой версии рекомендации XML, кодировки текста документа и необязательное объявление «standalone». Значения version и encoding будут строками, а standalone будет равно
1, если документ объявлен автономным,0, если объявлено, что он не является автономным, или-1, если предложение standalone отсутствует. Доступно только в Expat версии 1.95.0 или новее.
-
xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset) -
Вызывается, когда Expat начинает разбор объявления типа документа (
<!DOCTYPE ...). Значение doctypeName передаётся в точности в исходном виде. Параметры systemId и publicId содержат системный и публичный идентификаторы, если они указаны, илиNone, если они отсутствуют. Значение has_internal_subset будет истинным, если документ содержит внутреннее подмножество объявления документа. Требуется 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 будет истинным. Требуется 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 будет истинным, если сущность является параметрической, и ложным для общих сущностей (большинству приложений нужно учитывать только общие сущности). Доступно начиная с версии 1.95.0 библиотеки Expat.
-
xmlparser.NotationDeclHandler(notationName, base, systemId, publicId) -
Вызывается для объявлений нотаций. Параметры notationName, base, systemId и publicId являются строками, если они заданы. Если публичный идентификатор не указан, значение publicId будет
None.
-
xmlparser.StartNamespaceDeclHandler(prefix, uri) -
Вызывается, когда элемент содержит объявление пространства имён. Объявления пространств имён обрабатываются до вызова
StartElementHandlerдля элемента, в котором они размещены.
-
xmlparser.EndNamespaceDeclHandler(prefix) -
Вызывается при достижении закрывающего тега элемента, содержащего объявление пространства имён. Обработчик вызывается по одному разу для каждого объявления пространства имён элемента и в обратном порядке относительно вызовов
StartNamespaceDeclHandler, обозначавших начало области действия каждого объявления. Вызовы этого обработчика выполняются после соответствующегоEndElementHandler, относящегося к закрытию элемента.
-
xmlparser.CommentHandler(data) -
Вызывается для комментариев. data — текст комментария без начальных
'<!--'и конечных'-->'.
-
xmlparser.StartCdataSectionHandler() -
Вызывается в начале раздела CDATA. Этот обработчик и
EndCdataSectionHandlerнеобходимы для определения синтаксических начала и конца разделов CDATA.
-
xmlparser.EndCdataSectionHandler() -
Вызывается в конце раздела CDATA.
-
xmlparser.DefaultHandler(data) -
Вызывается для любых символов в XML-документе, для которых не задан соответствующий обработчик. Это означает, что он вызывается для символов, входящих в конструкцию, о которой можно было бы сообщить, но для которой не был предоставлен обработчик.
-
xmlparser.DefaultHandlerExpand(data) -
Этот обработчик аналогичен
DefaultHandler(), но не запрещает раскрытие внутренних сущностей. Ссылка на сущность не будет передана обработчику по умолчанию.
-
xmlparser.NotStandaloneHandler() -
Вызывается, если XML-документ не был объявлен автономным. Это происходит при наличии внешнего подмножества или ссылки на параметрическую сущность, если в XML-объявлении значение standalone не установлено в
yes. Если этот обработчик возвращает0, анализатор возбуждает ошибкуXML_ERROR_NOT_STANDALONE. Если обработчик не задан, анализатор не возбуждает исключение при таком условии.
-
xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId) -
Вызывается для ссылок на внешние сущности. base — текущий базовый адрес, заданный предыдущим вызовом
SetBase(). Публичный и системный идентификаторы 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 -
Ошибка возникает, когда входной байт не удалось корректно сопоставить символу; например, при наличии нулевого байта (значение
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.12/library/pyexpat.html