Maison >développement back-end >tutoriel php >Comment accéder aux noms de nœuds avec trait d'union dans 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!