Spec-Zone.ru › Python 3.7

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 может дополнительно выполнять обработку XML-пространств имен, включив его, указав значение для namespace_separator. Значение должно быть строкой длиной в один символ; будет поднято исключение ValueError, если длина строки некорректна (None считается тем же, что и опускание). При включенной обработке пространств имен имена типов элементов и имена атрибутов, относящиеся к пространству имен, будут расширены. Имя элемента, передаваемое обработчикам элементов StartElementHandler и EndElementHandler будет объединением URI пространства имен, символа разделителя пространства имен и локальной части имени. Если разделитель пространства имен — это нулевой байт (chr(0)), то URI пространства имен и локальная часть будут объединены без разделителя.

Например, если namespace_separator установлен на пробел (' ') и парсится следующий документ:

<?xml version="1.0"?>
<root xmlns    = "http://default-namespace.org/"
      xmlns:py = "http://www.python.org/ns/">
  <py:elem1 />
  <elem2 xmlns="" />
</root>

StartElementHandler получит следующие строки для каждого элемента:

http://default-namespace.org/ root
http://www.python.org/ns/ elem1
elem2

Из-за ограничений в библиотеке Expat используемой pyexpat, экземпляр xmlparser может быть использован только для анализа одного XML-документа. Вызывайте ParserCreate для каждого документа, чтобы предоставить уникальные экземпляры парсера.

См. также

Парсер XML Expat

Главная страница проекта Expat.

Объекты XMLParser

Объекты xmlparser имеют следующие методы:

xmlparser.Parse(data[, isfinal])

Парсит содержимое строки data, вызывая соответствующие функции-обработчики для обработки проанализированных данных. isfinal должно быть истинным при последнем вызове этого метода; это позволяет парсить один файл фрагментами, а не отправлять несколько файлов. data может быть пустой строкой в любой момент.

xmlparser.ParseFile(file)

Парсит XML-данные, читая из объекта file. file должен только предоставлять метод read(nbytes), возвращающий пустую строку, когда больше нет данных.

xmlparser.SetBase(base)

Устанавливает базу для разрешения относительных URI в идентификаторах системы в объявлениях. Разрешение относительных идентификаторов остается за приложением: это значение будет передано в качестве аргумента 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_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 не установлено standalone на 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, если он предоставлен.

Исключения 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

Словарь, сопоставляющий числовые коды ошибок с их строковыми описаниями.

New in version 3.2.

xml.parsers.expat.errors.messages

Словарь, сопоставляющий строковые описания с их кодами ошибок.

New in version 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

Парсер определил, что документ не «автономный», хотя он заявил об этом в 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.7/library/pyexpat.html

Spec-Zone.ru

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