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рассматривается так же, как пропуск). При включённой обработке XML-пространств имён имена элементов и имена атрибутов, относящиеся к пространству имён, будут расширены. Имя элемента, переданное обработчикам элементов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.
1. Объекты 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. Возвращает истинное значение, если установка флага прошла успешно.
-
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ложно.
-
xmlparser.ordered_attributes -
Установив это свойство в ненулевое целое число, атрибуты будут передаваться как список, а не как словарь. Атрибуты будут представлены в порядке их появления в тексте документа. Для каждого атрибута будут представлены две записи в списке: имя атрибута и его значение. (В более старых версиях модуля использовался такой же формат.) По умолчанию это свойство ложно; его можно изменить в любой момент.
-
xmlparser.specified_attributes -
Если установлено ненулевое целое число, парсер будет сообщать только те атрибуты, которые были указаны в документе, а не те, которые были получены из объявлений атрибутов. Приложения, которые устанавливают это значение, должны быть особенно внимательны, чтобы использовать дополнительную информацию, доступную из объявлений, по мере необходимости, чтобы соответствовать стандартам поведения XML-процессоров. По умолчанию это свойство ложно; его можно изменить в любой момент.
Следующие атрибуты содержат значения, относящиеся к последней ошибке, возникшей в объекте xmlparser, и будут содержать правильные значения только после вызова Parse() или ParseFile(), который вызвал исключение xml.parsers.expat.ExpatError.
-
xmlparser.ErrorByteIndex -
Индекс байта, на котором произошла ошибка.
-
xmlparser.ErrorCode -
Числовой код, указывающий на проблему. Это значение может быть передано функции
ErrorString()или сравнено с одним из констант, определённых в объектеerrors.
-
xmlparser.ErrorColumnNumber -
Номер столбца, на котором произошла ошибка.
-
xmlparser.ErrorLineNumber -
Номер строки, на котором произошла ошибка.
Следующие атрибуты содержат значения, относящиеся к текущей позиции разбора в объекте xmlparser. Во время обратного вызова, сообщающего о событии разбора, они указывают положение первого из последовательности символов, которые породили событие. При вызове вне обратного вызова указанная позиция будет находиться сразу после последнего события разбора (независимо от того, был ли связан с ним обратный вызов).
-
xmlparser.CurrentByteIndex -
Текущий индекс байта во входных данных парсера.
-
xmlparser.CurrentColumnNumber -
Текущий номер столбца во входных данных парсера.
-
xmlparser.CurrentLineNumber -
Текущий номер строки во входных данных парсера.
Вот список обработчиков, которые можно установить. Для установки обработчика на объект xmlparser o, используйте o.handlername = func. handlername должен быть взят из следующего списка, а func — вызываемый объект, принимающий правильное количество аргументов. Все аргументы — строки, если не указано иное.
-
xmlparser.XmlDeclHandler(version, encoding, standalone) -
Вызывается при разборе XML-объявления. XML-объявление — это (необязательное) объявление применимой версии рекомендации XML, кодировки текста документа и необязательное объявление «standalone». version и encoding будут строками, а standalone будет
1, если документ объявлен автономным,0, если он объявлен не автономным, или-1, если автономная фраза была опущена. Это доступно только с версией Expat 1.95.0 или новее.
-
xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset) -
Вызывается, когда 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 не установлено автономное значение в
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, если он предоставлен.
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.
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
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*.
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 -
В идентификаторе 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
Примечания
| [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.5/library/pyexpat.html