Maison >développement back-end >tutoriel php >Comment accéder correctement aux espaces de noms XML à l'aide de SimpleXML ?
Accès aux espaces de noms XML dans SimpleXML
Les espaces de noms XML sont une méthode de fusion de plusieurs formats XML dans un seul document tout en préservant leurs origines respectives. Un espace de noms XML est défini par une paire délimitée par deux points comprenant un préfixe indiquant l'espace de noms local et un identificateur de ressource uniforme (URI) identifiant l'espace de noms.
Pourquoi le code de la question ne fonctionne-t-il pas ?
La tentative initiale d'accès à un élément avec espace de noms dans l'exemple, c'est-à-dire ->ns2:item, échoue car SimpleXML s'attend à ce que les espaces de noms soient définis à l'aide des méthodes children() et attributs().
Accès aux espaces de noms dans SimpleXML
SimpleXML propose deux approches pour gérer les espaces de noms :
Code avec gestion de l'espace de noms
Voici une version corrigée du code :
define('XMLNS_EG1', 'http://example.com'); define('XMLNS_EG2', 'https://namespaces.example.org/two'); define('XMLNS_SEQ', 'urn:example:sequences'); foreach ($sx->children(XMLNS_EG1)->list->children(XMLNS_EG2)->item as $item) { echo 'Position: ' . $item->attributes(XMLNS_SEQ)->position . "\n"; echo 'Item: ' . (string)$item . "\n"; }
Vous pouvez également spécifier l'espace de noms initial lors du chargement du document à l'aide du paramètre $namespace_or_prefix de fonctions telles que simplexml_load_string.
Remarque : Il est recommandé d'utiliser l'URI complet de l'espace de noms au lieu des préfixes, car les préfixes peuvent changer, ce qui pourrait interrompre votre code.
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!