Convertire un file CSV in XML è una necessità comune quando si lavora con dati strutturati in diversi formati. Mentre il CSV (Comma-Separated Values) è ottimo per memorizzare dati tabellari, l’XML (Extensible Markup Language) è preferito per la rappresentazione dei dati in formato gerarchico. In questo articolo vedremo come effettuare questa conversione in PHP, passo dopo passo.
Creiamo un file dati.csv
di esempio per lavorare. Ecco un esempio di contenuto del file:
id,nome,cognome,email
1,Marco,Rossi,marco.rossi@example.com
2,Luca,Bianchi,luca.bianchi@example.com
3,Anna,Verdi,anna.verdi@example.com
Quindi creiamo il codice principale:
// Specifica il file CSV da leggere
$csvFile = 'dati.csv';
// Controlla se il file CSV esiste
if (!file_exists($csvFile)) {
die("Errore: Il file $csvFile non esiste.");
}
// Apri il file in modalità lettura
if (($handle = fopen($csvFile, 'r')) !== false) {
$headers = fgetcsv($handle); // Leggi la riga di intestazione
$rows = [];
// Leggi ogni riga successiva e mappala all'intestazione
while (($data = fgetcsv($handle)) !== false) {
$rows[] = array_combine($headers, $data);
}
fclose($handle); // Chiudi il file
}
// Crea l'elemento radice XML
$xml = new SimpleXMLElement('<?xml version="1.0"?><utenti></utenti>');
// Aggiungi i dati del CSV all'XML
foreach ($rows as $row) {
$utente = $xml->addChild('utente');
foreach ($row as $key => $value) {
$utente->addChild($key, htmlspecialchars($value));
}
}
// Specifica il file XML di output
$outputFile = 'dati.xml';
// Salva il contenuto XML nel file
$xml->asXML($outputFile);
echo "Conversione completata! File salvato come: $outputFile";
Dopo l’esecuzione dello script, troverai un file dati.xml
nella stessa directory. Ecco come sarà strutturato:
<?xml version="1.0"?>
<utenti>
<utente>
<id>1</id>
<nome>Marco</nome>
<cognome>Rossi</cognome>
<email>marco.rossi@example.com</email>
</utente>
<utente>
<id>2</id>
<nome>Luca</nome>
<cognome>Bianchi</cognome>
<email>luca.bianchi@example.com</email>
</utente>
<utente>
<id>3</id>
<nome>Anna</nome>
<cognome>Verdi</cognome>
<email>anna.verdi@example.com</email>
</utente>
</utenti>
Conclusione
Convertire un file CSV in XML con PHP è un processo relativamente semplice che richiede di leggere i dati CSV, strutturarli come XML e salvare il risultato in un file. Seguendo i passaggi descritti, puoi adattare il processo a qualsiasi esigenza, aggiungendo funzionalità come la validazione dei dati o una struttura XML più complessa.