Bonjiour,

J'ai un problème au travail que je n'arrive pas à démystifier.

J'ai pour tâche de créer via une mince application web le lien entre deux parties utilisant des programmes distincts mais interagissant entre eux grâce à une fiche XML.

Quasiment à la fin du projet, je bloque car je n'arrive pas à écrire dans le fichier XML.

J'ai sûrement du faire une grossière erreur que je n'ai pas vu, je décide donc de poster la fonction qui pose problème et peut-être que quelqu'un m'illuminera sur la source de mon problème ...

Comme il est prévu qu'une balise ne soit pas renseignée si elle n'a pas de contenu, les balises appartenant à une catégorie particulière sont indexées dans un tableau dynamique avant la création de la catégorie puis affiliées à celle-ci qui est crée si et seulement si une seule de ses balises ou plus est/sont remplie(s).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function generateXMLDocument(DOMDocument $xmlhdlr, Array $Xml_elements, Array $GivenData, $filename = "test.xml")
{
   foreach($Xml_elements as $category => $Elements)
   {
      $bCreateCategory = false;
 
      $i = 0;
 
      $TagsToAppend = Array();                           // Déclaration d'un tableau qui contiendra les balises à ajouter
 
      foreach($Elements as $label => $Definition)
      {
         $name = $Definition[0];
 
         foreach($GivenData as $ref => $content)
         {
            if($ref == $name)
            {
               $new_element  = $xmlhdlr->createElement($ref);
               $new_textNode = $xmlhdlr->createTextNode($content);
 
               $new_element->appendChild($new_textNode);
 
               $TagsToAppend[ $i++ ] = $new_element;
               $bCreateCategory = true;
            }
         }
 
      }
 
      $res = $xmlhdlr->getElementsByTagName($category);
 
      if($res->length < 1 && $bCreateCategory == true)      // Créer catégorie si elle n'existe pas
      {
         $new_category = $xmlhdlr->createElement($category);
 
         foreach($TagsToAppend as $new_tag)
            $new_category->appendChild($new_tag);
 
         $xmlhdlr->appendChild($new_category);
         var_dump($new_category);
         echo "<br/><br/>";
      }
   }
   $xmlhdlr->save($filename);
   echo "document saved ... <br/>";
}