Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
XMLParser
Наследует: RefCounted < Object
Предоставляет низкоуровневый интерфейс для создания парсеров XML-файлов.
Описание
Предоставляет низкоуровневый интерфейс для создания парсеров для файлов XML. Этот класс может служить основой для создания пользовательских парсеров XML.
Для парсинга XML необходимо открыть файл с помощью метода open() или буфер с помощью метода open_buffer(). Затем необходимо вызвать метод read() для парсинга следующих узлов. Большинство методов учитывают текущий парсерируемый узел.
Вот пример использования XMLParser для парсинга файла SVG (который основан на XML), выводя каждый элемент и его атрибуты в виде словаря:
var parser = XMLParser.new()
parser.open("path/to/file.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("path/to/file.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 (символьные данные), например, <![CDATA[CDATA section]]>.
NodeType NODE_UNKNOWN = 6
Неизвестный тип узла.
Описания метода
int get_attribute_count() const 🔗
Возвращает количество атрибутов в текущем анализируемом элементе.
Примечание: Если этот метод используется, когда текущий анализируемый узел не является 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, если текущий анализируемый элемент имеет атрибут с name.
Возвращает true, если текущий обработанный элемент пуст, например <element />.
Открывает XML file для разбора. Этот метод возвращает код ошибки.
Error open_buffer(buffer: PackedByteArray) 🔗
Открывает XML raw buffer для разбора. Этот метод возвращает код ошибки.
Анализирует следующий узел в файле. Этот метод возвращает код ошибки.
Перемещает курсор буфера на определенное смещение (от начала) и считывает следующий узел там. Этот метод возвращает код ошибки.
void skip_section() 🔗
Пропускает текущий раздел. Если текущий анализируемый узел содержит больше внутренних узлов, они будут проигнорированы, а курсор перейдет к закрытию текущего элемента.