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.

XMLParser

Eredita: RefCounted < Object

Fornisce un'interfaccia di basso livello per la creazione di parser per i file XML.

Descrizione

Fornisce un'interfaccia di basso livello per creare parser per file XML. Questa classe può servire come base per creare parser XML personalizzati.

Per analizzare XML, devi aprire un file con il metodo open() o un buffer con il metodo open_buffer(). Successivamente, il metodo read() deve essere chiamato per analizzare i nodi successivi. La maggior parte dei metodi prende in considerazione il nodo attualmente analizzato.

Ecco un esempio di utilizzo di XMLParser per analizzare un file SVG (basato su XML), stampando ogni elemento e i suoi attributi come un dizionario:

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("The ", node_name, " element has the following attributes: ", attributes_dict)

Metodi

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()


Enumerazioni

enum NodeType: 🔗

NodeType NODE_NONE = 0

Non c'è alcun nodo (nessun file o buffer aperto).

NodeType NODE_ELEMENT = 1

Un tipo di nodo elemento, noto anche come un tag, ad esempio <title>.

NodeType NODE_ELEMENT_END = 2

Un tipo di fine del nodo elemento, ad esempio </title>.

NodeType NODE_TEXT = 3

Un tipo di nodo di testo, ossia testo che non è all'interno di un elemento. Questo include lo spazio vuoto.

NodeType NODE_COMMENT = 4

Un tipo di nodo commento, ad esempio <!--A comment-->.

NodeType NODE_CDATA = 5

Un tipo di nodo per le sezioni CDATA (Character Data), ad esempio <![CDATA[CDATA section]]>.

NodeType NODE_UNKNOWN = 6

Un tipo di nodo sconosciuto.


Descrizioni dei metodi

int get_attribute_count() const 🔗

Restituisce il numero di attributi nell'elemento attualmente analizzato.

Nota: Se questo metodo è usato mentre il nodo attualmente analizzato non è NODE_ELEMENT o NODE_ELEMENT_END, questo conteggio non sarà aggiornato e rifletterà ancora l'ultimo elemento.


String get_attribute_name(idx: int) const 🔗

Restituisce il nome di un attributo dell'elemento attualmente analizzato, specificato dall'indice idx.


String get_attribute_value(idx: int) const 🔗

Restituisce il valore di un attributo dell'elemento attualmente analizzato, specificato dall'indice idx.


int get_current_line() const 🔗

Restituisce la riga attuale nel file analizzato, contando da 0.


String get_named_attribute_value(name: String) const 🔗

Restituisce il valore di un attributo dell'elemento attualmente analizzato, specificato dal suo nome name. Questo metodo genererà un errore se l'elemento non ha il tale attributo.


String get_named_attribute_value_safe(name: String) const 🔗

Restituisce il valore di un attributo dell'elemento attualmente analizzato, specificato dal suo nome name. Questo metodo restituirà una stringa vuota se l'elemento non ha il tale attributo.


String get_node_data() const 🔗

Restituisce il contenuto di un nodo di testo. Questo metodo genererà un errore se il nodo attualmente analizzato è di qualsiasi altro tipo.


String get_node_name() const 🔗

Restituisce il nome di un nodo. Questo metodo genera un errore se il nodo attualmente analizzato è un nodo di testo.

Nota: Il contenuto di un nodo NODE_CDATA e la stringa di commento di un nodo NODE_COMMENT sono anche loro considerati come nomi.


int get_node_offset() const 🔗

Restituisce l'offset di byte del nodo attualmente analizzato dall'inizio del file o del buffer. Questo è di solito equivalente al numero di caratteri prima della posizione di lettura.


NodeType get_node_type() 🔗

Restituisce il tipo del nodo attuale. Confrontalo con le costanti NodeType.


bool has_attribute(name: String) const 🔗

Restituisce true se l'elemento attualmente analizzato ha un attributo con il nome name.


bool is_empty() const 🔗

Restituisce true se l'elemento attualmente analizzato è vuoto, ad esempio <element />.


Error open(file: String) 🔗

Apre un file XML per l'analisi. Questo metodo restituisce un codice di errore.


Error open_buffer(buffer: PackedByteArray) 🔗

Apre un buffer grezzo XML per l'analisi. Questo metodo restituisce un codice di errore.


Error read() 🔗

Analizza il prossimo nodo nel file. Questo metodo restituisce un codice di errore.


Error seek(position: int) 🔗

Sposta il cursore del buffer in un determinato offset (dall'inizio) e legge il nodo successivo. Questo metodo restituisce un codice di errore.


void skip_section() 🔗

Salta la sezione attuale. Se il nodo attualmente analizzato contiene nodi più interni, saranno ignorati e il cursore andrà alla chiusura dell'elemento attuale.