4 votes

Ajouter des éléments enfants portant le même nom à l'aide de XML simple

//create a simple xml object
$xml = new SimpleXMLElement('some valid xml');

//add a my_elements node
$xml->addChild('my_elements');

//an array of elements that will be added to to my_elments
$my_elements = array('element_1', 'element_2', 'element_3');

foreach($my_elements as $element){
   //my_element is only added once as shown below
   $xml->my_elements->addChild('my_element');

   $xml->my_elements->my_element->addChild('something', $element);
}

Ce que je voudrais, c'est que cela ressemble à quelque chose comme ceci (affiché en xml pour faciliter la lecture)

<xml>
   <my_elements>
      <my_element>
          <something>element_1</something>
      </my_element>
      <my_element>
          <something>element_2</something>
      </my_element>
      <my_element>
          <something>element_3</something>
      </my_element>
   </my_elements>
</xml>

Mais ce que j'obtiens est plutôt quelque chose comme ceci

<xml>
   <my_elements>
      <my_element>
         <something>element_1</something>
         <something>element_2</something>
         <something>element_3</something>
      </my_element>
   </my_elements>
</xml>

Est-il possible de créer un nœud enfant distinct lorsque l'on utilise addChild avec le même nom ?

5voto

hakre Points 102271

Oui, vous devez seulement ajouter les enfants au nouvel élément ajouté, et non à l'élément existant. Voir http://php.net/manual/en/simplexmlelement.addchild.php :

foreach($my_elements as $element){
   //my_element is only added once as shown below
   $new_my_element = $xml->my_elements->addChild('my_element');
   $new_my_element->addChild('something', $element);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X