Spec-Zone.ru › Python 2.7

xml.parsers.expat — Быстрое разбор XML с использованием Expat

Предупреждение

Модуль pyexpat небезопасен при обработке вредоносно сконструированных данных. Если вам необходимо проанализировать недоверенные или неавторизованные данные, см. Уязвимости XML.

Новая версия 2.0.

Модуль 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[, namespace_separator]])

Создает и возвращает новый объект 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.

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.

Новая версия 2.1.

xmlparser.ExternalEntityParserCreate(context[, encoding])

Создаёт «дочерний» парсер, который может быть использован для разбора внешней сущности, на которую ссылается содержимое, проанализированное родительским парсером. Параметр context должен содержать строку, переданную обработчику ExternalEntityRefHandler(), описанному ниже. Дочерний парсер создаётся со значениями ordered_attributes, returns_unicode и 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.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.

Новая версия 2.3.

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

xmlparser.buffer_size

Размер буфера, используемого, когда buffer_text имеет значение true. Новый размер буфера можно установить, присвоив новое целое значение этому атрибуту. При изменении размера буфер будет очищен.

Новое в версии 2.3.

Изменено в версии 2.6: Теперь размер буфера можно изменять.

xmlparser.buffer_text

Установка этого значения в true заставляет объект xmlparser буферизовать текстовое содержимое, возвращаемое Expat, чтобы избежать многократных вызовов обратного вызова CharacterDataHandler() всякий раз, когда это возможно. Это может значительно повысить производительность, так как Expat обычно разбивает данные символов на фрагменты в каждой конечной точке строки. По умолчанию этот атрибут равен false, и его можно изменить в любое время.

Новое в версии 2.3.

xmlparser.buffer_used

Если buffer_text включено, это количество байтов, хранящихся в буфере. Эти байты представляют текст, закодированный в UTF-8. Этот атрибут не имеет осмысленной интерпретации, когда buffer_text имеет значение false.

Новое в версии 2.3.

xmlparser.ordered_attributes

Установка этого атрибута в ненулевое целое число заставляет атрибуты сообщаться в виде списка, а не словаря. Атрибуты представляются в порядке, в котором они были найдены в тексте документа. Для каждого атрибута представлены две записи в списке: имя атрибута и значение атрибута. (Более старые версии этого модуля также использовали этот формат.) По умолчанию этот атрибут равен false; его можно изменить в любое время.

Новое в версии 2.1.

xmlparser.returns_unicode

Если этот атрибут установлен в ненулевое целое число, функции обработчиков будут получать строки Unicode. Если returns_unicode равен False, обработчикам будут передаваться 8-битные строки, содержащие данные, закодированные в UTF-8. Это значение True по умолчанию, когда Python построен с поддержкой Unicode.

Изменено в версии 1.6: Может быть изменён в любое время, чтобы повлиять на тип результата.

xmlparser.specified_attributes

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

Новое в версии 2.1.

Следующие атрибуты содержат значения, относящиеся к последней ошибке, обнаруженной объектом xmlparser, и будут иметь правильные значения только после вызова Parse() или ParseFile(), которые вызвали исключение xml.parsers.expat.ExpatError.

xmlparser.ErrorByteIndex

Индекс байта, в котором произошла ошибка.

xmlparser.ErrorCode

Числовой код, определяющий проблему. Это значение можно передать в функцию ErrorString() или сравнить с одним из констант, определенных в объекте errors.

xmlparser.ErrorColumnNumber

Номер столбца, в котором произошла ошибка.

xmlparser.ErrorLineNumber

Номер строки, в которой произошла ошибка.

Следующие атрибуты содержат значения, относящиеся к текущей позиции разбора в объекте xmlparser. Во время обратного вызова, сообщающего о событии разбора, они указывают на позицию первой из последовательности символов, которые породили событие. При вызове за пределами обратного вызова указанная позиция будет находиться сразу после последнего события разбора (независимо от наличия связанного обратного вызова).

Новое в версии 2.4.

xmlparser.CurrentByteIndex

Текущий индекс байта во входных данных анализатора.

xmlparser.CurrentColumnNumber

Текущий номер столбца во входных данных анализатора.

xmlparser.CurrentLineNumber

Текущий номер строки во входных данных анализатора.

Вот список обработчиков, которые можно установить. Чтобы установить обработчик на объект xmlparser o, используйте o.handlername = func. handlername должен быть взят из следующего списка, а func — вызываемый объект, принимающий правильное количество аргументов. Все аргументы — строки, если не указано иное.

xmlparser.XmlDeclHandler(version, encoding, standalone)

Вызывается при разборе XML-декларации. XML-декларация — это (необязательная) декларация применимой версии рекомендации XML, кодировки текста документа и необязательной декларации «standalone». version и encoding будут строками, диктуемыми атрибутом returns_unicode, а standalone будет 1, если документ объявлен автономным, 0, если он объявлен не автономным, или -1, если оговорка standalone была опущена. Это доступно только с Expat версии 1.95.0 или новее.

Новое в версии 2.1.

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 — словарь, сопоставляющий имена атрибутов их значениям.

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.

Введено в версии 2.1.

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, если он предоставлен.

2. Исключение ExpatError

ExpatError исключения имеют ряд интересных атрибутов:

ExpatError.code

Внутренний номер ошибки Expat для конкретной ошибки. Он будет соответствовать одному из констант, определённых в объекте errors из этого модуля.

Введено в версии 2.1.

ExpatError.lineno

Номер строки, в которой была обнаружена ошибка. Первая строка имеет номер 1.

Введено в версии 2.1.

ExpatError.offset

Смещение символа в строке, где произошла ошибка. Первый столбец имеет номер 0.

Введено в версии 2.1.

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. Описания моделей содержимого

Модели содержимого описываются с помощью вложенных кортежей. Каждый кортеж содержит четыре значения: тип, квантификатор, имя и кортеж дочерних элементов. Дочерние элементы — это просто дополнительные описания моделей содержимого.

Значения первых двух полей — константы, определённые в объекте model модуля xml.parsers.expat. Эти константы можно разделить на две группы: группу типов модели и группу квантификаторов.

Константы в группе типов модели:

xml.parsers.expat.XML_CTYPE_ANY

Элемент с именем, указанным в имени модели, был объявлен с моделью содержимого ANY.

xml.parsers.expat.XML_CTYPE_CHOICE

Именованный элемент допускает выбор из нескольких вариантов; используется для моделей содержимого, таких как (A | B | C).

xml.parsers.expat.XML_CTYPE_EMPTY

Элементы, объявленные как EMPTY имеют этот тип модели.

xml.parsers.expat.XML_CTYPE_MIXED
xml.parsers.expat.XML_CTYPE_NAME
xml.parsers.expat.XML_CTYPE_SEQ

Модели, представляющие серию моделей, которые следуют одна за другой, обозначаются этим типом модели. Используется для моделей, таких как (A, B, C).

Константы в группе квантификаторов:

xml.parsers.expat.XML_CQUANT_NONE

Модификатор не задан, поэтому он может появиться ровно один раз, как в A.

xml.parsers.expat.XML_CQUANT_OPT

Модель необязательна: она может появиться один раз или не появиться вообще, как в A?.

xml.parsers.expat.XML_CQUANT_PLUS

Модель должна встречаться один или несколько раз (как в A+).

xml.parsers.expat.XML_CQUANT_REP

Модель должна встречаться ноль или несколько раз, как в A*.

5. Константы ошибок Expat

Следующие константы предоставлены в объекте errors модуля xml.parsers.expat. Эти константы полезны для интерпретации некоторых атрибутов исключения ExpatError, возникающего при возникновении ошибки.

Объект errors имеет следующие атрибуты:

xml.parsers.expat.XML_ERROR_ASYNC_ENTITY
xml.parsers.expat.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF

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

xml.parsers.expat.XML_ERROR_BAD_CHAR_REF

Ссылка на символ, ссылающаяся на символ, который является незаконным в XML (например, символ 0, или ‘&#0;’).

xml.parsers.expat.XML_ERROR_BINARY_ENTITY_REF

Ссылка на сущность относится к сущности, которая была объявлена с помощью обозначения, поэтому не может быть обработана.

xml.parsers.expat.XML_ERROR_DUPLICATE_ATTRIBUTE

Атрибут был использован более одного раза в открывающем теге.

xml.parsers.expat.XML_ERROR_INCORRECT_ENCODING
xml.parsers.expat.XML_ERROR_INVALID_TOKEN

Возникло, когда байт входных данных не смог быть корректно присвоен символу; например, байт NUL (значение 0) в потоке входных данных UTF-8.

xml.parsers.expat.XML_ERROR_JUNK_AFTER_DOC_ELEMENT

После элемента документа произошло что-то помимо пробелов.

xml.parsers.expat.XML_ERROR_MISPLACED_XML_PI

Декларация XML была найдена не в начале входных данных.

xml.parsers.expat.XML_ERROR_NO_ELEMENTS

Документ не содержит элементов (XML требует, чтобы все документы содержали ровно один элемент верхнего уровня).

xml.parsers.expat.XML_ERROR_NO_MEMORY

Expat не смог выделить внутреннюю память.

xml.parsers.expat.XML_ERROR_PARAM_ENTITY_REF

Ссылка на сущность параметра была найдена там, где она не разрешена.

xml.parsers.expat.XML_ERROR_PARTIAL_CHAR

В входных данных был найден неполный символ.

xml.parsers.expat.XML_ERROR_RECURSIVE_ENTITY_REF

Ссылка на сущность содержала другую ссылку на ту же сущность; возможно, через другое имя, и, возможно, косвенно.

xml.parsers.expat.XML_ERROR_SYNTAX

Встречена неопределенная синтаксическая ошибка.

xml.parsers.expat.XML_ERROR_TAG_MISMATCH

Закрывающий тег не соответствовал самому внутреннему открытому открывающему тегу.

xml.parsers.expat.XML_ERROR_UNCLOSED_TOKEN

Какой-то маркер (например, открывающий тег) не был закрыт до конца потока или был встречен следующий маркер.

xml.parsers.expat.XML_ERROR_UNDEFINED_ENTITY

Сделана ссылка на сущность, которая не была определена.

xml.parsers.expat.XML_ERROR_UNKNOWN_ENCODING

Кодировка документа не поддерживается Expat.

xml.parsers.expat.XML_ERROR_UNCLOSED_CDATA_SECTION

Раздел, помеченный CDATA, не был закрыт.

xml.parsers.expat.XML_ERROR_EXTERNAL_ENTITY_HANDLING
xml.parsers.expat.XML_ERROR_NOT_STANDALONE

Парсер определил, что документ не является «автономным», хотя он объявлял себя таковым в декларации XML, и NotStandaloneHandler был установлен и возвращён 0.

xml.parsers.expat.XML_ERROR_UNEXPECTED_STATE
xml.parsers.expat.XML_ERROR_ENTITY_DECLARED_IN_PE
xml.parsers.expat.XML_ERROR_FEATURE_REQUIRES_XML_DTD

Была запрошена операция, которая требует поддержки DTD, но Expat был сконфигурирован без поддержки DTD. Это никогда не должно сообщаться приложениям Python в стандартной сборке модуля xml.parsers.expat.

xml.parsers.expat.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING

Было запрошено изменение поведения после начала разбора, которое может быть изменено только до начала разбора. Это (на данный момент) возбуждается только UseForeignDTD().

xml.parsers.expat.XML_ERROR_UNBOUND_PREFIX

Найден не объявленный префикс при включенной обработке имен пространств имён.

xml.parsers.expat.XML_ERROR_UNDECLARING_PREFIX

Документ пытался удалить объявление имени пространства имён, связанное с префиксом.

xml.parsers.expat.XML_ERROR_INCOMPLETE_PE

Сущность параметра содержала неполный разметку.

xml.parsers.expat.XML_ERROR_XML_DECL

Документ не содержал вообще элемента документа.

xml.parsers.expat.XML_ERROR_TEXT_DECL

Произошла ошибка при разборе декларации текста во внешней сущности.

xml.parsers.expat.XML_ERROR_PUBLICID

В идентификаторе public были найдены недопустимые символы.

xml.parsers.expat.XML_ERROR_SUSPENDED

Запрошенная операция была выполнена над приостановленным парсером, но не разрешена. Это включает попытки предоставить дополнительные входные данные или остановить парсер.

xml.parsers.expat.XML_ERROR_NOT_SUSPENDED

Была предпринята попытка возобновить парсер, когда парсер не был приостановлен.

xml.parsers.expat.XML_ERROR_ABORTED

Это не должно сообщаться приложениям Python.

xml.parsers.expat.XML_ERROR_FINISHED

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

xml.parsers.expat.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/2.7/library/pyexpat.html

Spec-Zone.ru

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