Salut à tous!
Dans le cadre de mon projet informatique du moment, je suis chargé d'extraire les données d'un fichier XML pour les afficher ensuite en PDF (de façon à pouvoir intégrer ça dans un site). C'est en PHP que j'ai trouvé le plus de documentation là-dessus, c'est donc avec ce langage que j'essaie de faire cela. Tout d'abord, voici le code PHP que j'utilise actuellement:
< ? php
require('fpdf.php');
class PDF extends FPDF
{
//Chargement des données
function LoadData($file)
{
function RecupererDonnees($xml, $niveau, $data) {
foreach($xml as $nom=>$elem) {
// Pour tout noeud, on vérifie s'il y a un noeud enfant
if(trim($elem) == '''') {
// Si oui, on récupere les enfants
$enfants = $elem->children();
// on récupere les attributs s'ils sont présents
//$str = '''';
//$attributs = $elem->attributes();
//if(trim($attributs) != '''') {
//$str = ''('';
//foreach($attributs as $index=>$contenu) {
//$str .= ''[''.$index.''] ''.$contenu.'', '';
//}
//$str = substr($str, 0, -2).'')''; // Pour la mise en forme à nouveau
//}
// On introduit le parent
array_push($data, $nom, $elem, '''');
for($i=0;$i < = $niveau; $i++) {array_push($data, );} //Pour la mise en forme
// comme on a un enfant, on réappelle la fonction (le niveau sert juste à la mise en forme)
RecupererDonnees($enfants, $niveau + 1, $data);
}
else {
// si on n'a pas d'enfant, on récupère ce qu'il y a dedans
array_push($data, $nom, $elem);
}
}
return $data;
}
// On ouvre le fichier
$xml = simplexml_load_file($file);
$data = array();
$niveau = 0;
// On lance la fonction
$Donnees = RecupererDonnees($xml, $niveau, $data);
//print_r($Donnees);
return $Donnees;
} //fin de LoadData
//Ajoute le tableau au PDF
function Ajouter($data)
{
foreach($data as $row=>$elem)
{
if(is_array($row)){
Cell(40,6,$elem,1);
$this->Ln();
foreach($row as $elem) Ajouter($elem);
}
else{
$this->Cell(40,6,$elem,1);
$this->Ln();
}
}
}
} //fin de la classe PDF
$pdf=new PDF();
//Chargement des données
$Data=$pdf->LoadData('ProjetInfoBDD.xml');
//print_r($Data);
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->Ajouter($Data);
$pdf->Output();
?>
Remarquez que tout le passage concernant les attributs a été mis en commentaire, c'est simplement que le fichier XML sur lequel je travaille ne comporte pas d'attribut et donc que je m'en soucierai plus tard s'il me reste du temps (pour d'autres XML éventuels...). La fonction print_r($Donnees), quand elle n'est pas mise en commentaire,affiche les données récupérées dans le XML,et apparemment tout y est:
http://www.putfile.com/pic/7975330
(Dans le XML d'origine, Charges contient une série de Row contenant chacun les données mises en Array; idem pour Contrats,Locataires etc.)
Là où ça ne va pas, c'est au niveau de l'affichage du PDF:
http://www.putfile.com/pic/7975329
Comme vous pouvez le voir, il n'affiche que les éléments ''principaux'',pas les détails (les ''row''); je ne comprend pas comment arranger cela; pourriez-vous m'aider?
$Donnees = RecupererDonnees($xml, $niveau, $data);
//print_r($Donnees);
return $Donnees; => c'est pas plutot print_r qui devrait pas etre sans commentaire? Désolé la présentation est un peu fouillie essaie de poster sur sdz car ça fait bien un an que j'ai pas touché à du php.