- str_getcsv: documentation ( source)
- array_combine: documentation ( source)
- array_shift: documentation ( source)
- explode: documentation ( source)
<?php
$csv = <<<'CSV'
produit nom_pdf type_pdf prive_pdf
1 ENTREE_AIR_AUTO_RE_FR_FR_28143161 Rapport_d_essai 0
1 M_FT_FR_FR_201803 Fiche_technique 0
100 AMD+C_FT_FR_FR_201901 Fiche_technique 0
1000 APDR_FT_FR_FR_201907 Fiche_technique 0
1000 ATTESTATION_A1_CONVENTIONNELS Procès-verbal 1
CSV;
$lines = explode("\n", $csv);
$headers = str_getcsv(array_shift($lines), ' ');
$xw = new XMLWriter();
$xw->openMemory();
$xw->startDocument("1.0", "utf-8");
$xw->setIndent(true);
$xw->setIndentString(' ');
$xw->startElement('Products');
$prevprod = false;
foreach ( $lines as $line ) {
$data = array_combine($headers, str_getcsv($line, ' '));
if ( $data['produit'] !== $prevprod ) {
if ( $prevprod ) $xw->endElement();
$prevprod = $data['produit'];
$xw->startElement('produit');
$xw->writeAttribute('code', $data['produit']);
}
$xw->startElement('Fichier');
$xw->writeAttribute('nom_fichier', $data['nom_pdf']);
$xw->writeAttribute('type_fichier', $data['type_pdf']);
$xw->writeAttribute('prive', $data['prive_pdf']);
$xw->endElement();
}
$xw->endElement(); // product (last)
$xw->endElement(); // Products
$xw->endDocument();
echo $xw->outputMemory();