Files
godot-docs-l10n/classes/uk/class_xmlparser.rst

395 lines
20 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_XMLParser:
XMLParser
=========
**Успадковує:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Забезпечує інтерфейс низького рівня для створення парсерів для файлів XML.
.. rst-class:: classref-introduction-group
Опис
--------
Надає низькорівневий інтерфейс для створення парсерів для файлів `XML <https://en.wikipedia.org/wiki/XML>`__. Цей клас може слугувати основою для створення власних парсерів XML.
Щоб розібрати XML, необхідно відкрити файл за допомогою методу :ref:`open()<class_XMLParser_method_open>` або буфер за допомогою методу :ref:`open_buffer()<class_XMLParser_method_open_buffer>`. Потім для аналізу наступних вузлів потрібно викликати метод :ref:`read()<class_XMLParser_method_read>`. Більшість методів враховують поточний синтаксичний вузол.
Ось приклад використання **XMLParser** для аналізу файлу SVG (який базується на XML), друкуючи кожен елемент і його атрибути як словник:
.. tabs::
.. code-tab:: gdscript
var parser = XMLParser.new()
parser.open("шлях/до/файлу.svg")
while parser.read() != ERR_FILE_EOF:
if parser.get_node_type() == XMLParser.NODE_ELEMENT:
var node_name = parser.get_node_name()
var attributes_dict = {}
for idx in range(parser.get_attribute_count()):
attributes_dict[parser.get_attribute_name(idx)] = parser.get_attribute_value(idx)
print("Елемент ", node_name, " має такі атрибути: ", attributes_dict)
.. code-tab:: csharp
var parser = new XmlParser();
parser.Open("шлях/до/файлу.svg");
while (parser.Read() != Error.FileEof)
{
if (parser.GetNodeType() == XmlParser.NodeType.Element)
{
var nodeName = parser.GetNodeName();
var attributesDict = new Godot.Collections.Dictionary();
for (int idx = 0; idx < parser.GetAttributeCount(); idx++)
{
attributesDict[parser.GetAttributeName(idx)] = parser.GetAttributeValue(idx);
}
GD.Print($"Елемент {nodeName} має такі атрибути: {attributesDict}");
}
}
.. rst-class:: classref-reftable-group
Методи
------------
.. table::
:widths: auto
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_attribute_count<class_XMLParser_method_get_attribute_count>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_attribute_name<class_XMLParser_method_get_attribute_name>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_attribute_value<class_XMLParser_method_get_attribute_value>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_current_line<class_XMLParser_method_get_current_line>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_named_attribute_value<class_XMLParser_method_get_named_attribute_value>`\ (\ name\: :ref:`String<class_String>`\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_named_attribute_value_safe<class_XMLParser_method_get_named_attribute_value_safe>`\ (\ name\: :ref:`String<class_String>`\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_node_data<class_XMLParser_method_get_node_data>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_node_name<class_XMLParser_method_get_node_name>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_node_offset<class_XMLParser_method_get_node_offset>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`NodeType<enum_XMLParser_NodeType>` | :ref:`get_node_type<class_XMLParser_method_get_node_type>`\ (\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`has_attribute<class_XMLParser_method_has_attribute>`\ (\ name\: :ref:`String<class_String>`\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_empty<class_XMLParser_method_is_empty>`\ (\ ) |const| |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`open<class_XMLParser_method_open>`\ (\ file\: :ref:`String<class_String>`\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`open_buffer<class_XMLParser_method_open_buffer>`\ (\ buffer\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`read<class_XMLParser_method_read>`\ (\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`seek<class_XMLParser_method_seek>`\ (\ position\: :ref:`int<class_int>`\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`skip_section<class_XMLParser_method_skip_section>`\ (\ ) |
+------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Переліки
----------------
.. _enum_XMLParser_NodeType:
.. rst-class:: classref-enumeration
enum **NodeType**: :ref:`🔗<enum_XMLParser_NodeType>`
.. _class_XMLParser_constant_NODE_NONE:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_NONE** = ``0``
Не відкрився вузол (не файл або буфер).
.. _class_XMLParser_constant_NODE_ELEMENT:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_ELEMENT** = ``1``
Тип елемента, також відомий як тег, наприклад ``<title>``.
.. _class_XMLParser_constant_NODE_ELEMENT_END:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_ELEMENT_END** = ``2``
Кінець типу елемента, наприклад ``</title>``.
.. _class_XMLParser_constant_NODE_TEXT:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_TEXT** = ``3``
Тип текстового вузла, тобто текст, який не знаходиться всередині елемента. До складу входить білий простір.
.. _class_XMLParser_constant_NODE_COMMENT:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_COMMENT** = ``4``
Тип коментаря, наприклад ``<!--A comment-->``.
.. _class_XMLParser_constant_NODE_CDATA:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_CDATA** = ``5``
Тип вузла для розділів CDATA (Character Data), наприклад ``<![CDATA[CDATA section]]>``.
.. _class_XMLParser_constant_NODE_UNKNOWN:
.. rst-class:: classref-enumeration-constant
:ref:`NodeType<enum_XMLParser_NodeType>` **NODE_UNKNOWN** = ``6``
Невідомий тип вузла.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_XMLParser_method_get_attribute_count:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_attribute_count**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_get_attribute_count>`
Повертає кількість атрибутів в даний час приписаний елемент.
\ **Примітка:** Якщо цей метод використовується, в той час як в даний час parsed node не :ref:`NODE_ELEMENT<class_XMLParser_constant_NODE_ELEMENT>` або :ref:`NODE_ELEMENT_END<class_XMLParser_constant_NODE_ELEMENT_END>`, цей показник не буде оновлено і все ще відображати останній елемент.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_attribute_name:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_attribute_name**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_XMLParser_method_get_attribute_name>`
Повертає назву атрибуту вказаного елемента, зазначеного індексом ``idx``.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_attribute_value:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_attribute_value**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_XMLParser_method_get_attribute_value>`
Повертає значення атрибуту вказаного елемента, зазначеного індексом ``idx``.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_current_line:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_current_line**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_get_current_line>`
Повертаємо поточну лінію в файлі, що зараховується від 0.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_named_attribute_value:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_named_attribute_value**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_XMLParser_method_get_named_attribute_value>`
Повертає значення атрибуту вказаного елемента, зазначеного його ``name``. Цей метод підніме помилку, якщо елемент не має такого атрибуту.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_named_attribute_value_safe:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_named_attribute_value_safe**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_XMLParser_method_get_named_attribute_value_safe>`
Повертає значення атрибуту вказаного елемента, зазначеного його ``name``. Цей метод поверне порожній рядок, якщо елемент не має такого атрибуту.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_node_data:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_node_data**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_get_node_data>`
Повертає вміст текстового вузла. Цей метод підніме помилку, якщо поточний вузол парсингу є будь-яким іншим типом.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_node_name:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_node_name**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_get_node_name>`
Повертає назву вузла. Цей метод підніме помилку, якщо в даний час вказаний вузол є текстовим вершиною.
\ **Примітка:** Зміст вузла :ref:`NODE_CDATA<class_XMLParser_constant_NODE_CDATA>` і рядок коментаря :ref:`NODE_COMMENT<class_XMLParser_constant_NODE_COMMENT>` також вважаються іменами.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_node_offset:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_node_offset**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_get_node_offset>`
Повертаємо зовнішній вигляд в даний час вказаного вузла з моменту початку файлу або буферу. Це, як правило, еквівалентно кількості символів до читальної позиції.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_get_node_type:
.. rst-class:: classref-method
:ref:`NodeType<enum_XMLParser_NodeType>` **get_node_type**\ (\ ) :ref:`🔗<class_XMLParser_method_get_node_type>`
Повертає тип поточного вузла. Порівняйте з константами :ref:`NodeType<enum_XMLParser_NodeType>`.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_has_attribute:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **has_attribute**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_XMLParser_method_has_attribute>`
Повертає ``true``, якщо в даний час parsed елемент має атрибут з назвою ``name``.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_is_empty:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_empty**\ (\ ) |const| :ref:`🔗<class_XMLParser_method_is_empty>`
Повертає ``true``, якщо поточний аналізований елемент порожній, наприклад, ``<element />``.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_open:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **open**\ (\ file\: :ref:`String<class_String>`\ ) :ref:`🔗<class_XMLParser_method_open>`
Відкриває XML ``file`` для розбору. Цей метод повертає код помилки.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_open_buffer:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **open_buffer**\ (\ buffer\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) :ref:`🔗<class_XMLParser_method_open_buffer>`
Відкриваємо XML сиру ``buffer`` для парсингу. Цей метод повертає код помилки.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_read:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **read**\ (\ ) :ref:`🔗<class_XMLParser_method_read>`
Парує наступний вузол у файлі. Цей метод повертає код помилки.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_seek:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **seek**\ (\ position\: :ref:`int<class_int>`\ ) :ref:`🔗<class_XMLParser_method_seek>`
Переміщує курсор буфера до певного зсуву (з самого початку) і прочитає наступний вузол там. Цей метод повертає код помилки.
.. rst-class:: classref-item-separator
----
.. _class_XMLParser_method_skip_section:
.. rst-class:: classref-method
|void| **skip_section**\ (\ ) :ref:`🔗<class_XMLParser_method_skip_section>`
Пропустити поточний розділ. Якщо в даний час парсований вузол містить більш внутрішні вершини, вони будуть ігноруватися і курсор піде до закриття поточного елемента.
.. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)`
.. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)`
.. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)`
.. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)`
.. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)`
.. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)`
.. |void| replace:: :abbr:`void (Значення не повертається.)`