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)
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}");
}
}
Методи
get_attribute_count() const |
|
get_attribute_name(idx: int) const |
|
get_attribute_value(idx: int) const |
|
get_current_line() const |
|
get_named_attribute_value(name: String) const |
|
get_named_attribute_value_safe(name: String) const |
|
get_node_data() const |
|
get_node_name() const |
|
get_node_offset() const |
|
has_attribute(name: String) const |
|
is_empty() const |
|
open_buffer(buffer: PackedByteArray) |
|
read() |
|
void |
Переліки
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 також вважаються іменами.
Повертаємо зовнішній вигляд в даний час вказаного вузла з моменту початку файлу або буферу. Це, як правило, еквівалентно кількості символів до читальної позиції.
Повертає тип поточного вузла. Порівняйте з константами NodeType.
bool has_attribute(name: String) const 🔗
Повертає true, якщо в даний час parsed елемент має атрибут з назвою name.
Повертає true, якщо поточний аналізований елемент порожній, наприклад, <element />.
Відкриває XML file для розбору. Цей метод повертає код помилки.
Error open_buffer(buffer: PackedByteArray) 🔗
Відкриваємо XML сиру buffer для парсингу. Цей метод повертає код помилки.
Парує наступний вузол у файлі. Цей метод повертає код помилки.
Переміщує курсор буфера до певного зсуву (з самого початку) і прочитає наступний вузол там. Цей метод повертає код помилки.
void skip_section() 🔗
Пропустити поточний розділ. Якщо в даний час парсований вузол містить більш внутрішні вершини, вони будуть ігноруватися і курсор піде до закриття поточного елемента.