2017-09-07 11 views
1

J'ai un tableauComment créer un fichier XML multi-niveau à partir d'un tableau?

$arr=array("A","B","C"); 

et je veux créer un XML à plusieurs niveaux de ce comme

<root> 
    <error> 
    <A> 
     <B> 
     <C> 
      <D/> 
     </C> 
     </B> 
    </A> 
    </error> 
</root> 

et j'ai écrit le code comme

$arr = array("A", "B", "C", "D"); 
$doc = new DomDocument(); 
$doc->formatOutput=true; 
$doc->LoadXML('<root/>'); 
$root = $doc->documentElement; 
$errorgroup = $doc->createElement('error'); 
$root->appendChild($errorgroup); 
foreach($arr as $erreur) { 
    $missinggroup = $doc->createElement($erreur); 
    $errorgroup->appendChild($missinggroup); 
    $errorgroup=$doc->createElement($erreur); 
} 
echo $doc->saveXml(); 

mais la sortie est seulement affichage <A/> dans l'erreur interne XML et pas le reste B et C. Où vais-je me tromper ici?

Répondre

1

J'espère que celui-ci vous sera utile.

Problème:$errorgroup=$doc->createElement($erreur); Je ne pas ce que vous essayez de faire avec cette ligne.

Modifier ceci:

$errorgroup=$doc->createElement($erreur); 

à ceci:

$errorgroup=$missinggroup; 

Try this code snippet here

<?php 

ini_set('display_errors', 1); 

$arr = array("A", "B", "C", "D"); 
$doc = new DomDocument(); 
$doc->formatOutput=true; 
$doc->LoadXML('<root/>'); 
$root = $doc->documentElement; 
$errorgroup = $doc->createElement('error'); 
$root->appendChild($errorgroup); 
foreach($arr as $erreur) { 
    $missinggroup = $doc->createElement($erreur); 
    $errorgroup->appendChild($missinggroup); 
    $errorgroup=$missinggroup; 
} 
echo $doc->saveXml(); 

Sortie:

<root> 
    <error> 
    <A> 
     <B> 
     <C> 
      <D/> 
     </C> 
     </B> 
    </A> 
    </error> 
</root> 
+0

@timukh Espérons que celui-ci sera utile. –

+0

Oui ça marche! Merci beaucoup. Je vois où je me suis trompé maintenant. Merci encore! – timukh

+0

Oui je le ferai, mais il y a un temps minimum et avant que le site ne me laisse pas accepter une réponse. Il montre "vous pouvez accepter une réponse dans 5 minutes". Donc, je vais après 5mins :) – timukh