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(): stringEl 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
$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: SQLAquí 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()); // hSi 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) $elo$el->__toString()para el texto dentro del elemento. - Selecciones vacías. Acceder a un hijo que no existe sigue devolviendo un
SimpleXMLElement, ygetName()en él devuelve un string vacío en lugar de lanzar una excepción — comprueba concount()primero si eso importa. - Carga desde string o archivo. Crea elementos con
simplexml_load_string()osimplexml_load_file(); ambos devuelven objetos sobre los quegetName()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.