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

Hérite de : RefCounted < Object

Fournit une interface de bas niveau pour créer des parsers pour des fichiers XML.

Description

Fournit une interface de bas niveau pour créer des parsers pour XML. Cette classe peut servir de base pour faire des parsers XML personnalisés.

Pour parser du XML, vous devez ouvrir un fichier avec la méthode open() ou un buffer avec la méthode open_buffer(). Ensuite, la méthode read() doit être appelée pour parser les prochains nœuds. La plupart des méthodes prennent en considération le noeud actuellement parsé.

Voici un exemple d'utilisation de XMLParser pour parser un fichier SVG (qui est basé sur XML), affichant chaque élément et ses attributs en tant que dictionnaire :

var parser = XMLParser.new()
parser.open("chemin/vers/fichier.svg")
while parser.read()!= ERR_FILE_EOF:
    if parser.get_node_type() == XMLParser.NODE_ELEMENT:
        var nom_noeud = parser.get_node_name()
        var dict_attributs = {}
        for idx in range(parser.get_attribute_count()):
            dict_attributs[parser.get_attribute_name(idx)] = parser.get_attribute_value(idx)
        print("L'élément ", nom_noeud, " a les attributs suivants : ", dict_attributs)

Méthodes

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


Énumérations

enum NodeType: 🔗

NodeType NODE_NONE = 0

Il n'y a aucun nœud (aucun fichier ou buffer ouvert).

NodeType NODE_ELEMENT = 1

Un type de nœud d'élément, également connu sous le nom de balise, par ex. <title>.

NodeType NODE_ELEMENT_END = 2

Une fin de type de nœud d'élément, par ex. </title>.

NodeType NODE_TEXT = 3

Un type de nœud de texte, c'est-à-dire un texte qui n'est pas à l'intérieur d'un élément. Cela inclut les espacements.

NodeType NODE_COMMENT = 4

Un type de nœud de commentaire, par ex. <!--Un commentaire-->.

NodeType NODE_CDATA = 5

Un type de nœud pour les sections CDATA (Character Data, litt. données de caractère), par ex. <![CDATA[CDATA section]]>.

NodeType NODE_UNKNOWN = 6

Un type de nœud inconnu.


Descriptions des méthodes

int get_attribute_count() const 🔗

Renvoie le nombre d'attributs dans l'élément actuellement parsé.

Note : Si cette méthode est utilisée alors que le nœud actuellement parsé n'est pas NODE_ELEMENT ou NODE_ELEMENT_END, ce compte ne sera pas mis à jour et reflétera toujours le dernier élément.


String get_attribute_name(idx: int) const 🔗

Renvoie le nom d'un attribut de l'élément actuellement parsé, spécifié par l'index idx.


String get_attribute_value(idx: int) const 🔗

Renvoie la valeur d'un attribut de l'élément actuellement parsé, spécifié par l'index idx.


int get_current_line() const 🔗

Renvoie la ligne courante dans le fichier parsé, en comptant à partir de 0.


String get_named_attribute_value(name: String) const 🔗

Renvoie la valeur d'un attribut de l'élément actuellement parsé, spécifié par son nom name. Cette méthode va générer une erreur si l'élément n'a pas de tel attribut.


String get_named_attribute_value_safe(name: String) const 🔗

Renvoie la valeur d'un attribut de l'élément actuellement parsé, spécifié par son nom name. Cette méthode renverra une chaîne vide si l'élément n'a pas de tel attribut.


String get_node_data() const 🔗

Renvoie le contenu d'un nœud de texte. Cette méthode générera une erreur si le nœud parsé actuel est d'un autre type.


String get_node_name() const 🔗

Renvoie le nom d'un noeud. Cette méthode générera une erreur si le nœud actuellement parsé est un noeud de texte.

Note : Le contenu d'un nœud NODE_CDATA et la chaîne de commentaires d'un nœud NODE_COMMENT sont également considérés comme des noms.


int get_node_offset() const 🔗

Renvoie le décalage en octet du nœud actuellement parsé depuis le début du fichier ou du buffer. Ceci est généralement équivalent au nombre de caractères avant la position de lecture.


NodeType get_node_type() 🔗

Renvoie le type du nœud actuel. Comparez avec les constantes NodeType.


bool has_attribute(name: String) const 🔗

Renvoie true si l'élément actuellement parsé a un attribut ayant pour nom name.


bool is_empty() const 🔗

Renvoie true si l’élément actuellement traité est vide, par exemple <element />.


Error open(file: String) 🔗

Ouvre un fichier XML file pour le parsage. Cette méthode renvoie un code d'erreur.


Error open_buffer(buffer: PackedByteArray) 🔗

Ouvre un buffer XML brut pour être parsé. Cette méthode renvoie un code d'erreur.


Error read() 🔗

Parse le prochain noeud dans le fichier. Cette méthode renvoie un code d'erreur.


Error seek(position: int) 🔗

Déplace le curseur du buffer vers un certain décalage (depuis le début) et lit le nœud suivant à cet endroit. Cette méthode renvoie un code d'erreur.


void skip_section() 🔗

Saute la section actuelle. Si le nœud actuellement parsé contient d'autres nœuds internes, ils seront ignorés et le curseur ira à la fin de l'élément courant.