Ecrire un fichier XML en fonction de données reçues
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:
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/>";
} |