getName()
SimpleXML é uma extensão PHP para trabalhar com XML. SimpleXMLElement::getName() retorna o nome da tag do elemento XML.
Introdução
SimpleXMLElement::getName() retorna o nome da tag do elemento XML sobre o qual é chamado — não o conteúdo de texto, nem o nome de uma classe. Faz parte do SimpleXML, a extensão PHP leve para leitura e edição de XML com sintaxe simples de objeto.
Esta página aborda a assinatura do método, um exemplo executável, o comportamento de getName() com namespaces e loops, e as armadilhas mais comuns.
Sintaxe
public SimpleXMLElement::getName(): stringO método não recebe argumentos e retorna uma string com o nome local do elemento. O < e o > iniciais, quaisquer atributos e os nós filhos do elemento são todos ignorados — você obtém apenas o nome da tag.
Exemplo básico
$xml aponta para o elemento raiz <book>, portanto $xml->getName() retorna book. Acessando o filho title e chamando getName() retorna title. Note que getName() fornece o nome da tag, enquanto (string) $xml->title forneceria o conteúdo de texto, PHP Basics.
Por que usar
Geralmente você conhece os nomes dos elementos com antecedência, então por que solicitá-los em tempo de execução? getName() é mais útil quando você está iterando sobre filhos cujos nomes não controla — por exemplo, percorrendo uma lista mista de registros ou construindo um conversor genérico de XML para 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: SQLAqui o loop não codifica book ou magazine; getName() informa o que é cada nó à medida que você o visita. Combine com children() para percorrer uma árvore e attributes() para ler os atributos de cada elemento.
Namespaces
Para um elemento em um namespace XML, getName() retorna o nome local sem o prefixo. O exemplo abaixo usa getName() junto com getNamespaces() para recuperar o 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()); // hSe você apenas chamar getName(), perderá o prefixo h:, portanto consulte o namespace separadamente quando o prefixo for relevante.
Armadilhas comuns
- É um método, não uma propriedade. Escreva
$el->getName()com parênteses, não$el->getName. - Retorna a tag, não o valor. Use
(string) $elou$el->__toString()para o texto dentro do elemento. - Seleções vazias. Acessar um filho que não existe ainda retorna um
SimpleXMLElement, egetName()nele retorna uma string vazia em vez de lançar uma exceção — verifique comcount()antes, se isso importar. - Carregando de uma string/arquivo. Construa elementos com
simplexml_load_string()ousimplexml_load_file(); ambos retornam objetos nos quaisgetName()funciona da mesma forma.
Conclusão
SimpleXMLElement::getName() retorna o nome da tag de um elemento XML usando sintaxe limpa de objeto. Brilha quando você processa XML cuja estrutura não conhece antecipadamente — combine com children(), attributes() e asXML() para ler e reescrever documentos. Para uma visão geral do processamento de XML em PHP, comece com a visão geral do SimpleXML.