XMLParser

Hereda: RefCounted < Object

Proporciona una interfaz de bajo nivel para crear analizadores para archivos XML.

Descripción

Proporciona una interfaz de bajo nivel para crear analizadores de archivos XML. Esta clase puede servir de base para crear analizadores XML personalizados.

Para analizar XML, debes abrir un archivo con el método open() o un búfer con el método open_buffer(). Luego, se debe llamar al método read() para analizar los siguientes nodos. La mayoría de los métodos toman en cuenta el nodo analizado actualmente.

Aquí hay un ejemplo de cómo usar XMLParser para analizar un archivo SVG (que se basa en XML), imprimiendo cada elemento y sus atributos como un diccionario:

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("El elemento ", node_name, " tiene los siguientes atributos: ", attributes_dict)

Métodos

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


Enumeraciones

enum NodeType: 🔗

NodeType NODE_NONE = 0

No hay ningún nodo (ningún archivo o buffer abierto).

NodeType NODE_ELEMENT = 1

Un tipo de nodo de elemento, también conocido como etiqueta, p. ej., <title>.

NodeType NODE_ELEMENT_END = 2

Un tipo de nodo de fin de elemento, p. ej., </title>.

NodeType NODE_TEXT = 3

Un tipo de nodo de texto, es decir, texto que no está dentro de un elemento. Esto incluye los espacios en blanco.

NodeType NODE_COMMENT = 4

Un tipo de nodo de comentario, p. ej., <!--A comment-->.

NodeType NODE_CDATA = 5

Un tipo de nodo para secciones CDATA (Character Data), p. ej., <![CDATA[CDATA section]]>.

NodeType NODE_UNKNOWN = 6

Un tipo de nodo desconocido.


Descripciones de Métodos

int get_attribute_count() const 🔗

Devuelve el número de atributos en el elemento actualmente analizado.

Nota: Si este método se utiliza mientras que el nodo actualmente analizado no es NODE_ELEMENT o NODE_ELEMENT_END, este conteo no se actualizará y seguirá reflejando el último elemento.


String get_attribute_name(idx: int) const 🔗

Devuelve el nombre de un atributo del elemento analizado actualmente, especificado por el índice idx.


String get_attribute_value(idx: int) const 🔗

Devuelve el valor de un atributo del elemento analizado actualmente, especificado por el índice idx.


int get_current_line() const 🔗

Devuelve la línea actual en el archivo analizado, contando desde 0.


String get_named_attribute_value(name: String) const 🔗

Devuelve el valor de un atributo del elemento analizado, especificado por su name. Este método generará un error si el elemento no tiene dicho atributo.


String get_named_attribute_value_safe(name: String) const 🔗

Devuelve el valor de un atributo del elemento analizado, especificado por su name. Este método devolverá una string vacía si el elemento no tiene dicho atributo.


String get_node_data() const 🔗

Devuelve el contenido de un nodo de texto. Este método lanzará un error si el nodo actualmente analizado es de cualquier otro tipo.


String get_node_name() const 🔗

Devuelve el nombre de un nodo. Este método lanzará un error si el nodo actualmente analizado es un nodo de texto.

Nota: El contenido de un nodo NODE_CDATA y la string de comentario de un nodo NODE_COMMENT también se consideran nombres.


int get_node_offset() const 🔗

Devuelve el desplazamiento en bytes del nodo actualmente analizado desde el principio del archivo o búfer. Este suele ser equivalente al número de caracteres antes de la posición de lectura.


NodeType get_node_type() 🔗

Devuelve el tipo del nodo actual. Compara con las constantes de NodeType.


bool has_attribute(name: String) const 🔗

Devuelve true si el elemento actualmente analizado tiene un atributo con el name.


bool is_empty() const 🔗

Devuelve true si el elemento analizado actualmente está vacío, por ejemplo, <element />.


Error open(file: String) 🔗

Abre un file XML para el análisis. Este método devuelve un código de error.


Error open_buffer(buffer: PackedByteArray) 🔗

Abre un buffer XML en bruto para el análisis. Este método devuelve un código de error.


Error read() 🔗

Analiza el siguiente nodo del archivo. Este método devuelve un código de error.


Error seek(position: int) 🔗

Mueve el cursor del búfer a un desplazamiento determinado (desde el inicio) y lee el siguiente nodo allí. Este método devuelve un código de error.


void skip_section() 🔗

Omite la sección actual. Si el nodo analizado contiene más nodos internos, se ignorarán y el cursor se dirigirá al cierre del elemento actual.