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 может дополнительно обрабатывать обработку имен пространств имён, которая включается с помощью параметра 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.
20.13.1. Объекты 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]) -
Вызов с истинным значением для flag (по умолчанию) заставит Expat вызвать
ExternalEntityRefHandlerсNoneдля всех аргументов, чтобы позволить загрузить альтернативное DTD. Если документ не содержит объявление типа документа,ExternalEntityRefHandlerвсё равно будет вызван, ноStartDoctypeDeclHandlerиEndDoctypeDeclHandlerне будут вызваны.Передача ложного значения для flag отменит предыдущий вызов, передавший истинное значение, но в остальном не окажет влияния.
Этот метод может быть вызван только до вызова методов
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равен false.
-
xmlparser.ordered_attributes -
Установка этого атрибута в ненулевое целое число заставляет атрибуты передаваться в виде списка, а не словаря. Атрибуты передаются в порядке их появления в тексте документа. Для каждого атрибута представляются две записи списка: имя атрибута и значение атрибута. (Старые версии этого модуля также использовали этот формат.) По умолчанию этот атрибут равен false; его можно изменить в любое время.
-
xmlparser.specified_attributes -
Если установлено значение, отличное от нуля, анализатор будет передавать только те атрибуты, которые были указаны в экземпляре документа, а не те, которые были получены из объявлений атрибутов. Приложения, которые устанавливают это значение, должны быть особенно внимательны, чтобы использовать дополнительную информацию, доступную из объявлений, в случае необходимости, для соответствия стандартам поведения XML-процессоров. По умолчанию этот атрибут равен false; его можно изменить в любое время.
Следующие атрибуты содержат значения, относящиеся к последней ошибке, возникшей в объекте xmlparser, и будут иметь правильные значения только после вызова Parse() или ParseFile(), который вызвал исключение xml.parsers.expat.ExpatError.
-
xmlparser.ErrorByteIndex -
Индекс байта, в котором произошла ошибка.
-
xmlparser.ErrorCode -
Числовой код, указывающий проблему. Это значение можно передать в функцию
ErrorString()или сравнить с одной из констант, определенных в объектеerrors.
-
xmlparser.ErrorColumnNumber -
Номер столбца, в котором произошла ошибка.
-
xmlparser.ErrorLineNumber -
Номер строки, в которой произошла ошибка.
Следующие атрибуты содержат значения, относящиеся к текущему расположению разбора в объекте xmlparser. Во время обратного вызова, сообщающего о событии разбора, они указывают на расположение первой из последовательности символов, которые породили событие. При вызове вне обратного вызова указанное положение будет находиться сразу за последним событием разбора (независимо от того, был ли связанный обратный вызов).
-
xmlparser.CurrentByteIndex -
Текущий индекс байта в входных данных анализатора.
-
xmlparser.CurrentColumnNumber -
Текущий номер столбца во входных данных анализатора.
-
xmlparser.CurrentLineNumber -
Текущий номер строки во входных данных анализатора.
Вот список обработчиков, которые можно установить. Чтобы установить обработчик в объекте xmlparser o, используйте o.handlername = func. handlername должен быть взят из следующего списка, а func должен быть вызываемым объектом, принимающим правильное количество аргументов. Все аргументы — строки, если не указано иное.
-
xmlparser.XmlDeclHandler(version, encoding, standalone) -
Вызывается при разборе XML-декларации. XML-декларация — это (необязательная) декларация применимой версии рекомендации XML, кодировки текстовых данных и необязательной декларации «standalone». version и encoding будут строками, а standalone будет
1если документ объявлен автономным,0если он объявлен не автономным или-1если автономная часть была опущена. Доступно только с Expat версии 1.95.0 или новее.
-
xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset) -
Вызывается, когда Expat начинает разбор объявления типа документа (
<!DOCTYPE ...). doctypeName передается точно так, как представлен. Параметры systemId и publicId предоставляют системные и публичные идентификаторы, если они указаны, илиNoneесли пропущены. has_internal_subset будет true, если документ содержит внутреннее объявление подмножества.
-
xmlparser.EndDoctypeDeclHandler() -
Вызывается, когда Expat закончил разбор объявления типа документа. Требуется Expat версии 1.2 или новее.
-
xmlparser.ElementDeclHandler(name, model) -
Вызывается один раз для каждого объявления типа элемента. name — имя типа элемента, а model — представление модели содержимого.
-
xmlparser.AttlistDeclHandler(elname, attname, type, default, required) -
Вызывается для каждого объявленного атрибута типа элемента. Если объявление списка атрибутов объявляет три атрибута, этот обработчик вызывается три раза, один раз для каждого атрибута. elname — имя элемента, к которому относится объявление, а attname — имя объявленного атрибута. Тип атрибута — строка, передаваемая как type; возможные значения —
'CDATA','ID','IDREF', … default — значение по умолчанию для атрибута, используемое, когда атрибут не указан в экземпляре документа, илиNoneесли значения по умолчанию отсутствуют (#IMPLIEDзначения). Если атрибут должен быть указан в экземпляре документа, required будет true. Требуется Expat версии 1.95.0 или новее.
-
xmlparser.StartElementHandler(name, attributes) -
Вызывается для начала каждого элемента. name — строка, содержащая имя элемента, а attributes — атрибуты элемента. Если
ordered_attributestrue, это список (см.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 будет true, если сущность является параметрической, и false для общих сущностей (большинству приложений важны только общие сущности). Доступно начиная с версии 1.95.0 библиотеки Expat.
-
xmlparser.NotationDeclHandler(notationName, base, systemId, publicId) -
Вызывается для объявлений нотаций. notationName, base, systemId и publicId — строки, если заданы. Если публичный идентификатор опущен, publicId будет
None.
-
xmlparser.StartNamespaceDeclHandler(prefix, uri) -
Вызывается, когда элемент содержит объявление пространства имен. Объявления пространств имен обрабатываются до вызова
StartElementHandlerдля элемента, на котором размещаются объявления.
-
xmlparser.EndNamespaceDeclHandler(prefix) -
Вызывается при достижении закрывающего тега элемента, содержащего объявление пространства имён. Он вызывается один раз для каждого объявления пространства имён в элементе в обратном порядке, в котором был вызван
StartNamespaceDeclHandlerдля указания начала области действия каждого объявления пространства имён. Вызовы этого обработчика производятся после соответствующегоEndElementHandlerдля закрытия элемента.
-
xmlparser.CommentHandler(data) -
Вызывается для комментариев. data — текст комментария, исключая начальный
'<!--'и конечный'-->'.
-
xmlparser.StartCdataSectionHandler() -
Вызывается в начале раздела CDATA. Он и
EndCdataSectionHandlerнеобходимы для идентификации синтаксического начала и конца разделов CDATA.
-
xmlparser.EndCdataSectionHandler() -
Вызывается в конце раздела CDATA.
-
xmlparser.DefaultHandler(data) -
Вызывается для любых символов в XML-документе, для которых не указан соответствующий обработчик. Это означает символы, которые являются частью структуры, которая может быть отслежена, но для которой не предоставлен обработчик.
-
xmlparser.DefaultHandlerExpand(data) -
Это то же самое, что и
DefaultHandler(), но не препятствует расширению внутренних сущностей. Ссылка на сущность не будет передана обработчику по умолчанию.
-
xmlparser.NotStandaloneHandler() -
Вызывается, если XML-документ не объявлен автономным документом. Это происходит, когда существует внешний подмножество или ссылка на параметрическую сущность, но в объявлении XML не установлено автономное значение
yesв объявлении XML. Если этот обработчик возвращает0, то анализатор поднимет ошибкуXML_ERROR_NOT_STANDALONE. Если этот обработчик не установлен, анализатор не генерирует исключение для этого условия.
-
xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId) -
Вызывается для ссылок на внешние сущности. base — текущий базовый путь, заданный предыдущим вызовом
SetBase(). Идентификаторы public и system, systemId и publicId, представляют собой строки, если заданы; если идентификатор public не задан, publicId будетNone. Значение context является непрозрачным и должно использоваться только как описано ниже.Для обработки внешних сущностей этот обработчик должен быть реализован. Он отвечает за создание подпарсера с использованием
ExternalEntityParserCreate(context), инициализацию его соответствующими обратными вызовами и обработку сущности. Этот обработчик должен возвращать целое число; если он возвращает0, анализатор поднимет ошибкуXML_ERROR_EXTERNAL_ENTITY_HANDLING, в противном случае обработка продолжит.Если этот обработчик не предоставлен, внешние сущности будут сообщаться обратным вызовом
DefaultHandler, если он предоставлен.
20.13.2. Исключения 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.
20.13.3. Пример
Следующая программа определяет три обработчика, которые просто выводят свои аргументы.
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
20.13.4. Описание моделей содержимого
Модели содержимого описываются с помощью вложенных кортежей. Каждый кортеж содержит четыре значения: тип, квантификатор, имя и кортеж дочерних элементов. Дочерние элементы — это просто дополнительные описания моделей содержимого.
Значения первых двух полей — константы, определённые в модуле 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*.
20.13.5. Константы ошибок 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 -
Парсер определил, что документ не является «standalone», хотя он был объявлен таким в объявлении XML, и
NotStandaloneHandlerбыло установлено и возвращено0.
-
xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE
-
xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE
-
xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD -
Запрошенная операция требует поддержки DTD, но Expat был сконфигурирован без поддержки DTD. Это никогда не должно сообщаться приложениям Python. Это должно никогда не возвращаться стандартной сборкой модуля
xml.parsers.expat.
-
xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING -
Была запрошена смена поведения после начала парсинга, которая может быть изменена только до начала парсинга. Это (в настоящее время) поднимается только
UseForeignDTD().
-
xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX -
Найден неопределённый префикс при включенном обработке пространств имён.
-
xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX -
Документ пытался удалить объявление пространства имён, связанное с префиксом.
-
xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE -
Параметрическая сущность содержала неполный разметку.
-
xml.parsers.expat.errors.XML_ERROR_XML_DECL -
В документе вообще отсутствует элемент документа.
-
xml.parsers.expat.errors.XML_ERROR_TEXT_DECL -
При анализе объявления текста во внешней сущности произошла ошибка.
-
xml.parsers.expat.errors.XML_ERROR_PUBLICID -
В общедоступном идентификаторе найдены недопустимые символы.
-
xml.parsers.expat.errors.XML_ERROR_SUSPENDED -
Запрошенная операция была выполнена на приостановленном анализаторе, но не допускается. Это включает попытки предоставить дополнительные данные или остановить анализатор.
-
xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED -
Была предпринята попытка возобновить работу анализатора, когда анализатор не был приостановлен.
-
xml.parsers.expat.errors.XML_ERROR_ABORTED -
Это не должно сообщаться приложениям Python.
-
xml.parsers.expat.errors.XML_ERROR_FINISHED -
Запрошенная операция была выполнена на анализаторе, который завершил обработку входных данных, но не допускается. Это включает попытки предоставить дополнительные данные или остановить анализатор.
-
xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE
Примечания
-
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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/pyexpat.html