Spec-Zone.ru › Python 3.8

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.

END_OF_DOCUMENT_MARKER

Объекты 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 если фраза standalone опущена. Это доступно только с версией Expat 1.95.0 или более поздней.

xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset)

Вызывается, когда Expat начинает разбор объявления типа документа (<!DOCTYPE ...). doctypeName передается точно так, как он представлен. Параметры systemId и publicId предоставляют системные и публичные идентификаторы, если они указаны, или None если они опущены. has_internal_subset будет true, если документ содержит внутреннее объявление подмножества документа. Это требует 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 будет true. Это требует 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 для сбора необходимой информации.

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(). Публичные и системные идентификаторы, 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, или ‘&#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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/pyexpat.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API