XMLParser

Успадковує: RefCounted < Object

Забезпечує інтерфейс низького рівня для створення парсерів для файлів XML.

Опис

Надає низькорівневий інтерфейс для створення парсерів для файлів XML. Цей клас може слугувати основою для створення власних парсерів XML.

Щоб розібрати XML, необхідно відкрити файл за допомогою методу open() або буфер за допомогою методу open_buffer(). Потім для аналізу наступних вузлів потрібно викликати метод read(). Більшість методів враховують поточний синтаксичний вузол.

Ось приклад використання XMLParser для аналізу файлу SVG (який базується на XML), друкуючи кожен елемент і його атрибути як словник:

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)

Методи

int

get_attribute_count() const

String

get_attribute_name(idx: int) const

String

get_attribute_value(idx: int) const

int

get_current_line() const

String

get_named_attribute_value(name: String) const

String

get_named_attribute_value_safe(name: String) const

String

get_node_data() const

String

get_node_name() const

int

get_node_offset() const

NodeType

get_node_type()

bool

has_attribute(name: String) const

bool

is_empty() const

Error

open(file: String)

Error

open_buffer(buffer: PackedByteArray)

Error

read()

Error

seek(position: int)

void

skip_section()


Переліки

enum NodeType: 🔗

NodeType NODE_NONE = 0

Не відкрився вузол (не файл або буфер).

NodeType NODE_ELEMENT = 1

Тип елемента, також відомий як тег, наприклад <title>.

NodeType NODE_ELEMENT_END = 2

Кінець типу елемента, наприклад </title>.

NodeType NODE_TEXT = 3

Тип текстового вузла, тобто текст, який не знаходиться всередині елемента. До складу входить білий простір.

NodeType NODE_COMMENT = 4

Тип коментаря, наприклад <!--A comment-->.

NodeType NODE_CDATA = 5

Тип вузла для розділів CDATA (Character Data), наприклад <![CDATA[CDATA section]]>.

NodeType NODE_UNKNOWN = 6

Невідомий тип вузла.


Описи методів

int get_attribute_count() const 🔗

Повертає кількість атрибутів в даний час приписаний елемент.

Примітка: Якщо цей метод використовується, в той час як в даний час parsed node не NODE_ELEMENT або NODE_ELEMENT_END, цей показник не буде оновлено і все ще відображати останній елемент.


String get_attribute_name(idx: int) const 🔗

Повертає назву атрибуту вказаного елемента, зазначеного індексом idx.


String get_attribute_value(idx: int) const 🔗

Повертає значення атрибуту вказаного елемента, зазначеного індексом idx.


int get_current_line() const 🔗

Повертаємо поточну лінію в файлі, що зараховується від 0.


String get_named_attribute_value(name: String) const 🔗

Повертає значення атрибуту вказаного елемента, зазначеного його name. Цей метод підніме помилку, якщо елемент не має такого атрибуту.


String get_named_attribute_value_safe(name: String) const 🔗

Повертає значення атрибуту вказаного елемента, зазначеного його name. Цей метод поверне порожній рядок, якщо елемент не має такого атрибуту.


String get_node_data() const 🔗

Повертає вміст текстового вузла. Цей метод підніме помилку, якщо поточний вузол парсингу є будь-яким іншим типом.


String get_node_name() const 🔗

Повертає назву вузла. Цей метод підніме помилку, якщо в даний час вказаний вузол є текстовим вершиною.

Примітка: Зміст вузла NODE_CDATA і рядок коментаря NODE_COMMENT також вважаються іменами.


int get_node_offset() const 🔗

Повертаємо зовнішній вигляд в даний час вказаного вузла з моменту початку файлу або буферу. Це, як правило, еквівалентно кількості символів до читальної позиції.


NodeType get_node_type() 🔗

Повертає тип поточного вузла. Порівняйте з константами NodeType.


bool has_attribute(name: String) const 🔗

Повертає true, якщо в даний час parsed елемент має атрибут з назвою name.


bool is_empty() const 🔗

Повертає true, якщо поточний аналізований елемент порожній, наприклад, <element />.


Error open(file: String) 🔗

Відкриває XML file для розбору. Цей метод повертає код помилки.


Error open_buffer(buffer: PackedByteArray) 🔗

Відкриваємо XML сиру buffer для парсингу. Цей метод повертає код помилки.


Error read() 🔗

Парує наступний вузол у файлі. Цей метод повертає код помилки.


Error seek(position: int) 🔗

Переміщує курсор буфера до певного зсуву (з самого початку) і прочитає наступний вузол там. Цей метод повертає код помилки.


void skip_section() 🔗

Пропустити поточний розділ. Якщо в даний час парсований вузол містить більш внутрішні вершини, вони будуть ігноруватися і курсор піде до закриття поточного елемента.