La transformation de tableaux multidimensionnels en chaînes XML est une tâche courante dans la gestion des données. Considérons le tableau suivant :
$nodes = array( "parent node", "parent node", array( "child node", "child node", array( "grand child node", "grand child node" ) ) );
Le but est de le convertir en une chaîne XML ressemblant à la structure suivante :
<node> <node>parent node</node> <node>parent node</node> <node> <node>child node</node> <node>child node</node> <node> <node>grand child node</node> <node>grand child node</node> </node> </node> </node>
Alors que les fonctions récursives offrent une approche viable, une solution itérative peut être plus efficace dans certains cas. Voici un exemple utilisant un itérateur :
class TranformArrayIterator extends RecursiveIteratorIterator { ... // Implementation omitted for brevity }
Cet itérateur personnalisé permet un contrôle personnalisé sur le processus d'itération, notamment :
Pour utiliser l'itérateur :
$iterator = new TranformArrayIterator(new RecursiveArrayIterator($nodes)); foreach($iterator as $val) { echo $val; }
Pour un meilleur contrôle sur la génération XML, un XMLWriter peut être utilisé comme collaborateur :
class TranformArrayIterator extends RecursiveIteratorIterator { ... // Implementation omitted for brevity } $xmlWriter = new XmlWriter; ... // Configuration and initialization of XMLWriter omitted $iterator = new TranformArrayIterator( $xmlWriter, new RecursiveArrayIterator($nodes) );
Dans ce scénario, l'itérateur a un accès direct au XMLWriter, permettant un contrôle précis sur la structure XML générée.
Les deux approches itératives offrent des moyens efficaces de transformer des tableaux multidimensionnels en chaînes XML. Le choix spécifique dépend du niveau de contrôle souhaité sur la sortie XML.
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!