Maison >développement back-end >tutoriel php >Comment accéder aux noms de nœuds avec trait d'union dans SimpleXML ?

Comment accéder aux noms de nœuds avec trait d'union dans SimpleXML ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 13:37:10445parcourir

How to Access Hyphenated Node Names in SimpleXML?

Nœud de lecture SimpleXML avec nom avec trait d'union

En XML, des traits d'union peuvent être utilisés dans les noms de nœuds pour améliorer la lisibilité. Cependant, ces noms avec trait d'union peuvent poser un défi lors de l'utilisation de SimpleXML pour analyser le document XML.

Problème

Lors de la tentative d'accès à un nœud avec un nom avec trait d'union à l'aide de SimpleXML, les utilisateurs peuvent rencontrer une erreur ou des résultats incorrects. Par exemple, avec le XML suivant :

<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" ...>
  <office:document-meta ...>
    ...
  </office:document-meta>
</gnm:Workbook>

Essayer d'accéder au nœud "document-meta" en utilisant la syntaxe standard :

$docMeta = $officeXML->document-meta;

aboutit à une erreur ou à une valeur entière incorrecte .

Solution

Pour accéder correctement à un nœud avec un nom avec trait d'union dans SimpleXML, placez le nom du nœud entre accolades :

$docMeta = $officeXML->{'document-meta'};

Cette syntaxe demande à SimpleXML de traiter le nom avec trait d'union comme une chaîne et de rechercher le nœud par son nom spécifique.

Accès aux attributs

Notez que cette syntaxe d'accolades n'est nécessaire que pour accéder aux nœuds d'éléments. Les attributs avec des noms avec trait d'union sont accessibles à l'aide de la notation matricielle standard :

$attribute = $node['hyphenated-attribute'];

Méthode alternative

Si la syntaxe des accolades n'est pas préférée, une méthode alternative consiste à utiliser la notation suivante :

$docMeta = $officeXML->{'office:document-meta'};

Cette déclaration d'espace de noms explicite garantit que SimpleXML recherche le nœud dans le spécifié espace de noms.

Conclusion

En utilisant des accolades ou une déclaration d'espace de noms explicite, les utilisateurs peuvent lire avec succès les nœuds avec des noms avec trait d'union dans les documents XML à l'aide de SimpleXML.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn