Hello la communauté,
J'ai quelque problème pour générer un fichier XML avec une partie d'un autre fichier XML.
Je m'explique :
Je récupère un fichier XML, je le parse pour en récupérer une certaine partie.
Je crée un nouveau fichier XML avec un structure de base et ensuite j'essaie d'ajouter à ce nouveau fichier les noeuds que j'ai récupérer sur le premier fichier.
Voici mon code :
Code PHP :
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
?>
<FORM method="POST" action="#" ENCTYPE="multipart/form-data">
<INPUT type=hidden>
<INPUT type=file name="uploadedGml">
<INPUT type=submit value="Envoyer">
</FORM>
<pre><? print_r($_FILES); ?></pre>
<?
if ($_FILES['uploadedGml']['error']) {
switch ($_FILES['uploadedGml']['error']) {
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
}
else {
// $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
// ce qui signifie qu'il n'y a eu aucune erreur
}
//on charge le fichier uploader
$dom = new DomDocument();
$dom->load($_FILES['uploadedGml']['tmp_name']);
$racine = $dom->documentElement;
echo $racine->nodeName;
//on récupère les propriété géométriques
$tagName = "geometryProperty";
$geoms = $dom->getElementsByTagName($tagName);
$geometryNodes;
$i = 0;
foreach($geoms as $geom){
$geometryNodes[$i]=$geom;
$i++;
}
//on récupère les textes de labels
$tagName = "";
//création du document de sortie
$outputDom = new DOMDocument();
$rootName = "JPalLayer";
$elem = $outputDom->createElement($rootName);
$outputDom->appendChild($elem);
$tags = array("JPalLayer","JPalFeatureCollection","gml:FeatureCollection","gml:featureMember","ogo:JPalFeature");
foreach($tags as $tagName){
$elem = createChild($outputDom, $elem, $tagName);
}
$elems = $outputDom->getElementsByTagName("ogo:JPalFeature");
$i = 0;
//on ajoute la propriete The geom
foreach($elems as $jPalfeature){
$theGeom = $outputDom->createElement("the_geom");
$node = $geometryNodes[$i];
$theGeom->appendChild($node);
$i++;
$jPalfeature->appendChild($theGeom);
}
$chaineXML = $outputDom->saveXML();
echo($chaineXML);
$handle = fopen("upl/superTest.xml","w+");
$outputDom->save("upl/superTest.xml");
function createChild($dom,$parent,$childName){
$child = $dom->createElement($childName);
$parent->appendChild($child);
return $child;
}
?>
ET voici l'erreur que j'ai :
Uncaught exception 'DOMException' with message 'Wrong Document Error' in /var/www/requestBuilder/index.php:76 Stack trace: #0 /var/www/requestBuilder/index.php(76): DOMNode->appendChild(Object(DOMElement)) #1 {main} thrown in /var/www/requestBuilder/index.php on line 76
Je comprend bien que les n½uds que j'essaie d'ajouter au document proviennent d'un autre document de base... Mais y a-t-il un moyen de résoudre ce problème.
Merci d'avance!