xml.parsers.expat — Быстрый разбор XML с помощью Expat
Примечание
Если вам нужно разбирать недоверенные данные или данные, подлинность которых не подтверждена, см. раздел Безопасность 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. Значение должно быть строкой из одного символа; если длина строки недопустима, будет вызвано исключение
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 должно быть истинным; это позволяет разбирать один файл по частям, но не отправлять несколько файлов. data в любой момент может быть пустой строкой.
-
xmlparser.ParseFile(file) -
Разбирает данные XML, считывая их из объекта file. Объекту file достаточно предоставлять метод
read(nbytes), возвращающий пустую строку, когда данные заканчиваются.
-
xmlparser.SetBase(base) -
Задаёт базовый URI, используемый для разрешения относительных URI в системных идентификаторах объявлений. Разрешение относительных идентификаторов оставлено приложению: это значение будет передано как аргумент base функциям
ExternalEntityRefHandler(),NotationDeclHandler()иUnparsedEntityDeclHandler().
-
xmlparser.GetBase() -
Возвращает строку с базовым URI, заданным предыдущим вызовом
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.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-процессоров. По умолчанию атрибут имеет значение 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 автономность не задана как
yes. Если этот обработчик возвращает0, парсер возбуждает ошибкуXML_ERROR_NOT_STANDALONE. Если обработчик не задан, парсер не возбуждает исключение в этой ситуации.
-
xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId) -
Вызывается для ссылок на внешние сущности. base — текущий базовый URI, заданный предыдущим вызовом
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 -
В общедоступном идентификаторе обнаружены недопустимые символы.
-
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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/pyexpat.html