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, или ‘�’).
-
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