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. Значение должно быть строкой длиной один символ; если строка имеет недопустимую длину, будет поднято исключение
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) -
Устанавливает базовый адрес, который будет использоваться для разрешения относительных 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 объекты имеют следующие атрибуты:
-
xmlparser.buffer_size -
Размер буфера, используемого при
buffer_textимеет значение true. Новый размер буфера может быть установлен путем присвоения нового целочисленного значения этому атрибуту. При изменении размера буфера он будет очищен.
-
xmlparser.buffer_text -
Установка этого значения в true приводит к тому, что объект
xmlparserбуферизует текстовое содержимое, возвращаемое Expat, чтобы избежать многократных вызовов обратного вызоваCharacterDataHandler()всякий раз, когда это возможно. Это может существенно улучшить производительность, поскольку Expat обычно разбивает текстовые данные на фрагменты на каждой новой строке. Этот атрибут по умолчанию имеет значение false и может быть изменен в любое время.
-
xmlparser.buffer_used -
Если
buffer_textвключен, количество байтов, хранящихся в буфере. Эти байты представляют текст в кодировке UTF-8. Этот атрибут не имеет осмысленной интерпретации, когдаbuffer_textложно.
-
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.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истинно, это список (см.ordered_attributesдля полного описания). В противном случае это словарь, сопоставляющий имена со значениями.
-
xmlparser.EndElementHandler(name) -
Вызывается для конца каждого элемента.
-
xmlparser.ProcessingInstructionHandler(target, data) -
Вызывается для каждой инструкции обработки.
-
xmlparser.CharacterDataHandler(data) -
Вызывается для данных символов. Это вызывается для обычных данных символов, содержимого, помеченного CDATA, и игнорируемых пробелов. Приложения, которые должны различать эти случаи, могут использовать обратные вызовы
StartCdataSectionHandler,EndCdataSectionHandlerиElementDeclHandlerдля сбора необходимой информации.
-
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в объявлении 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. Это никогда не должно сообщатся приложением 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 -
В идентификаторе 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 и сущностей).
Примечания
-
1 -
Строка кодировки, включенная в выходные данные XML, должна соответствовать соответствующим стандартам. Например, «UTF-8» допустимо, но «UTF8» — нет. См. https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl и https://www.iana.org/assignments/character-sets/character-sets.xhtml.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/pyexpat.html