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)
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($"El elemento {nodeName} tiene los siguientes atributos: {attributesDict}");
}
}
Métodos
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 |
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.
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.
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.
Devuelve true si el elemento analizado actualmente está vacío, por ejemplo, <element />.
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.
Analiza el siguiente nodo del archivo. Este método devuelve un código de error.
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.