W3docs

getName()

SimpleXMLElement::getName() devuelve el nombre de etiqueta de un elemento XML en PHP. Aprende su sintaxis, ejemplos y casos con espacios de nombres.

Introducción

SimpleXMLElement::getName() devuelve el nombre de etiqueta del elemento XML sobre el que se llama — no su contenido de texto, no un nombre de clase. Forma parte de SimpleXML, la extensión PHP ligera para leer y editar XML con sintaxis de objetos simple.

Esta página cubre la firma del método, un ejemplo ejecutable, cómo se comporta getName() con espacios de nombres y bucles, y los errores comunes que confunden a la gente.

Sintaxis

public SimpleXMLElement::getName(): string

El método no recibe argumentos y devuelve un string con el nombre local del elemento. Los caracteres < y >, cualquier atributo y los nodos hijo del elemento son ignorados — solo obtienes el nombre de la etiqueta.

Ejemplo básico

php— editable, runs on the server

$xml apunta al elemento raíz <book>, por lo que $xml->getName() devuelve book. Al acceder al hijo title y llamar a getName() se obtiene title. Ten en cuenta que getName() te da el nombre de la etiqueta, mientras que (string) $xml->title te daría el contenido de texto, PHP Basics.

Por qué usarlo

Normalmente conoces los nombres de los elementos de antemano, ¿entonces por qué pedirlos en tiempo de ejecución? getName() es más útil cuando estás iterando sobre hijos cuyos nombres no controlas — por ejemplo, recorriendo una lista mixta de registros o construyendo un conversor genérico de XML a array.

<?php

$xml = new SimpleXMLElement(
    '<library><book>PHP</book><magazine>Wired</magazine><book>SQL</book></library>'
);

foreach ($xml->children() as $child) {
    echo $child->getName() . ': ' . $child . "\n";
}
// book: PHP
// magazine: Wired
// book: SQL

Aquí el bucle no escribe en duro book ni magazine; getName() te dice qué es cada nodo al visitarlo. Combínalo con children() para recorrer un árbol y con attributes() para leer los atributos de cada elemento.

Espacios de nombres

Para un elemento en un espacio de nombres XML, getName() devuelve el nombre local sin el prefijo. El siguiente ejemplo usa getName() junto con getNamespaces() para recuperar el contexto completo.

<?php

$xml = new SimpleXMLElement(
    '<root xmlns:h="http://example.com/html"><h:td>Cell</h:td></root>'
);

$cell = $xml->children('http://example.com/html')[0];

echo $cell->getName();                          // td  (prefix stripped)
echo "\n";
echo array_key_first($cell->getNamespaces());   // h

Si solo llamas a getName() perderás el prefijo h:, así que consulta el espacio de nombres por separado cuando el prefijo sea importante.

Errores comunes

  • Es un método, no una propiedad. Escribe $el->getName() con paréntesis, no $el->getName.
  • Devuelve la etiqueta, no el valor. Usa (string) $el o $el->__toString() para el texto dentro del elemento.
  • Selecciones vacías. Acceder a un hijo que no existe sigue devolviendo un SimpleXMLElement, y getName() en él devuelve un string vacío en lugar de lanzar una excepción — comprueba con count() primero si eso importa.
  • Carga desde string o archivo. Crea elementos con simplexml_load_string() o simplexml_load_file(); ambos devuelven objetos sobre los que getName() funciona de la misma manera.

Conclusión

SimpleXMLElement::getName() devuelve el nombre de etiqueta de un elemento XML usando una sintaxis de objetos limpia. Destaca cuando procesas XML cuya estructura no conoces de antemano — combínalo con children(), attributes() y asXML() para leer y reescribir documentos. Para una visión más amplia del análisis de XML en PHP, comienza con la descripción general de SimpleXML.

Práctica

Práctica
¿Qué devuelve SimpleXMLElement::getName()?
¿Qué devuelve SimpleXMLElement::getName()?
Was this page helpful?