xml.parsers.expat
— Fast XML parsing using 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. Якщо задано кодування [1], воно замінить неявне або явне кодування документа.Експат може додатково виконувати обробку простору імен XML для вас, увімкнувши значення для namespace_separator. Значення має бути односимвольним рядком; a
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
для кожного документа, щоб надати унікальні екземпляри аналізатора.
Дивись також
- Аналізатор Expat XML
Домашня сторінка проекту Expat.
Об’єкти XMLParser¶
Об’єкти xmlparser
мають такі методи:
- xmlparser.Parse(data[, isfinal])¶
Аналізує вміст рядка data, викликаючи відповідні функції обробки для обробки аналізованих даних. isfinal має бути true під час останнього виклику цього методу; це дозволяє розбирати один файл у фрагментах, а не надсилати кілька файлів. data може бути порожнім рядком у будь-який час.
- xmlparser.ParseFile(file)¶
Проаналізуйте читання даних XML з об’єктного файлу. 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.SetReparseDeferralEnabled(enabled)¶
Попередження
Calling
SetReparseDeferralEnabled(False)
has security implications, as detailed below; please make sure to understand these consequences prior to using theSetReparseDeferralEnabled
method.Expat 2.6.0 introduced a security mechanism called «reparse deferral» where instead of causing denial of service through quadratic runtime from reparsing large tokens, reparsing of unfinished tokens is now delayed by default until a sufficient amount of input is reached. Due to this delay, registered handlers may — depending of the sizing of input chunks pushed to Expat — no longer be called right after pushing new input to the parser. Where immediate feedback and taking over responsiblity of protecting against denial of service from large tokens are both wanted, calling
SetReparseDeferralEnabled(False)
disables reparse deferral for the current Expat parser instance, temporarily or altogether. CallingSetReparseDeferralEnabled(True)
allows re-enabling reparse deferral.Note that
SetReparseDeferralEnabled()
has been backported to some prior releases of CPython as a security fix. Check for availability ofSetReparseDeferralEnabled()
usinghasattr()
if used in code running across a variety of Python versions.Нове в версії 3.11.9.
- xmlparser.GetReparseDeferralEnabled()¶
Returns whether reparse deferral is currently enabled for the given Expat parser instance.
Нове в версії 3.11.9.
Об’єкти xmlparser
мають такі атрибути:
- xmlparser.buffer_size¶
Розмір буфера, який використовується, коли
buffer_text
має значення true. Новий розмір буфера можна встановити, присвоївши цьому атрибуту нове ціле значення. Коли розмір змінено, буфер буде очищено.
- xmlparser.buffer_text¶
Setting this to true causes the
xmlparser
object to buffer textual content returned by Expat to avoid multiple calls to theCharacterDataHandler()
callback whenever possible. This can improve performance substantially since Expat normally breaks character data into chunks at every line ending. This attribute is false by default, and may be changed at any time. Note that when it is false, data that does not contain newlines may be chunked too.
- 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, кодування тексту документа та необов’язкове «окреме» оголошення. 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, якщо документ містить підмножину декларацій внутрішнього документа. Для цього потрібна версія 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)¶
Called for character data. This will be called for normal character data, CDATA marked content, and ignorable whitespace. Applications which must distinguish these cases can use the
StartCdataSectionHandler
,EndCdataSectionHandler
, andElementDeclHandler
callbacks to collect the required information. Note that the character data may be chunked even if it is short and so you may receive more than one call toCharacterDataHandler()
. Set thebuffer_text
instance attribute toTrue
to avoid that.
- 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()
. Загальнодоступні та системні ідентифікатори, 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
Елемент, названий іменем моделі, було оголошено таким, що має модель вмісту «БУДЬ-ЯКА».
- 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
або „�
“).
- 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. Стандартна збірка модуля
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¶
У загальнодоступному ідентифікаторі знайдено неприпустимі символи.
- 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¶
- xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XML¶
An attempt was made to undeclare reserved namespace prefix
xml
or to bind it to another namespace URI.
- xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNS¶
An attempt was made to declare or undeclare reserved namespace prefix
xmlns
.
- xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URI¶
An attempt was made to bind the URI of one the reserved namespace prefixes
xml
andxmlns
to another namespace prefix.
- xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENT¶
Про це не слід повідомляти програми Python.
- xml.parsers.expat.errors.XML_ERROR_NO_BUFFER¶
Про це не слід повідомляти програми Python.
- xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACH¶
The limit on input amplification factor (from DTD and entities) has been breached.
Виноски