W3docs

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

O 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

php— editable, runs on the server

$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: SQL

Aqui 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());   // h

Se 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) $el ou $el->__toString() para o texto dentro do elemento.
  • Seleções vazias. Acessar um filho que não existe ainda retorna um SimpleXMLElement, e getName() nele retorna uma string vazia em vez de lançar uma exceção — verifique com count() antes, se isso importar.
  • Carregando de uma string/arquivo. Construa elementos com simplexml_load_string() ou simplexml_load_file(); ambos retornam objetos nos quais getName() 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.

Prática

Prática
O que SimpleXMLElement::getName() retorna?
O que SimpleXMLElement::getName() retorna?
Was this page helpful?