W3docs

getName()

SimpleXMLElement::getName() retourne le nom de la balise d'un élément XML. Syntaxe, exemples et comportement avec les espaces de noms en PHP.

Introduction

SimpleXMLElement::getName() retourne le nom de la balise de l'élément XML sur lequel vous l'appelez — pas son contenu textuel, pas un nom de classe. Elle fait partie de SimpleXML, l'extension PHP légère pour lire et modifier du XML avec une syntaxe objet simple.

Cette page couvre la signature de la méthode, un exemple exécutable, le comportement de getName() avec les espaces de noms et les boucles, ainsi que les pièges courants.

Syntaxe

public SimpleXMLElement::getName(): string

La méthode ne prend aucun argument et retourne une string contenant le nom local de l'élément. Le < et > initiaux, les attributs et les nœuds enfants de l'élément sont tous ignorés — vous obtenez uniquement le nom de la balise.

Exemple de base

php— editable, runs on the server

$xml pointe vers l'élément racine <book>, donc $xml->getName() retourne book. En accédant à l'enfant title et en appelant getName(), on obtient title. Notez que getName() vous donne le nom de la balise, tandis que (string) $xml->title vous donnerait le contenu textuel, PHP Basics.

Pourquoi l'utiliser

Vous connaissez généralement les noms des éléments à l'avance, alors pourquoi les demander à l'exécution ? getName() est surtout utile lorsque vous itérez sur des enfants dont vous ne contrôlez pas les noms — par exemple, lorsque vous parcourez une liste mixte d'enregistrements ou construisez un convertisseur générique XML-vers-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

Ici, la boucle ne code pas en dur book ou magazine ; getName() vous indique ce qu'est chaque nœud au fur et à mesure. Combinez-la avec children() pour parcourir un arbre et attributes() pour lire les attributs de chaque élément.

Espaces de noms

Pour un élément dans un espace de noms XML, getName() retourne le nom local sans le préfixe. L'exemple ci-dessous utilise getName() avec getNamespaces() pour récupérer le contexte complet.

<?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 vous n'appelez que getName(), vous perdez le préfixe h:, donc interrogez l'espace de noms séparément lorsque le préfixe est important.

Pièges courants

  • C'est une méthode, pas une propriété. Écrivez $el->getName() avec des parenthèses, pas $el->getName.
  • Elle retourne la balise, pas la valeur. Utilisez (string) $el ou $el->__toString() pour le texte à l'intérieur de l'élément.
  • Sélections vides. Accéder à un enfant qui n'existe pas retourne quand même un SimpleXMLElement, et getName() sur celui-ci retourne une string vide plutôt que de lever une exception — vérifiez avec count() si cela vous importe.
  • Chargement depuis une string ou un fichier. Créez des éléments avec simplexml_load_string() ou simplexml_load_file() ; les deux retournent des objets sur lesquels getName() fonctionne de la même façon.

Conclusion

SimpleXMLElement::getName() retourne le nom de la balise d'un élément XML avec une syntaxe objet claire. Elle est particulièrement utile lorsque vous traitez du XML dont vous ne connaissez pas la structure à l'avance — combinez-la avec children(), attributes() et asXML() pour lire et réécrire des documents. Pour une vue d'ensemble de l'analyse du XML en PHP, commencez par la vue d'ensemble de SimpleXML.

Pratique

Pratique
Que retourne SimpleXMLElement::getName() ?
Que retourne SimpleXMLElement::getName() ?
Was this page helpful?