La conversione di un file CSV (Comma-Separated Values) in XML è una pratica comune quando si ha bisogno di strutturare i dati in un formato leggibile e utilizzabile in applicazioni che richiedono un markup ben definito. In questo articolo, esploreremo come effettuare questa conversione utilizzando il linguaggio di programmazione Java.
Supponiamo di avere un file CSV chiamato data.csv
con il seguente contenuto:
Name,Age,Email
John,30,john@example.com
Jane,25,jane@example.com
Quindi creiamo il codice principale:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CsvToXml {
public static void main(String[] args) {
String csvFile = "data.csv";
String line;
String csvSplitBy = ",";
try {
// Creazione del documento XML
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
// Elemento radice
Element rootElement = doc.createElement("Rows");
doc.appendChild(rootElement);
// Lettura del CSV
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
String[] headers = br.readLine().split(csvSplitBy); // Leggi l'intestazione
while ((line = br.readLine()) != null) {
String[] data = line.split(csvSplitBy);
// Crea un nuovo elemento per ogni riga
Element row = doc.createElement("Row");
rootElement.appendChild(row);
for (int i = 0; i < headers.length; i++) {
Element element = doc.createElement(headers[i]);
element.appendChild(doc.createTextNode(data[i]));
row.appendChild(element);
}
}
}
// Scrivi il file XML su disco
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new FileWriter("data.xml"));
transformer.transform(source, result);
System.out.println("Conversione completata! File XML creato: data.xml");
} catch (IOException | ParserConfigurationException | javax.xml.transform.TransformerException e) {
e.printStackTrace();
}
}
}
Ecco come appare il file data.xml
:
<Rows>
<Row>
<Name>John</Name>
<Age>30</Age>
<Email>john@example.com</Email>
</Row>
<Row>
<Name>Jane</Name>
<Age>25</Age>
<Email>jane@example.com</Email>
</Row>
</Rows>
Conclusione
In questo articolo, abbiamo visto come convertire un file CSV in un file XML utilizzando Java. Questo approccio è altamente personalizzabile e può essere adattato a vari formati e requisiti. Se hai bisogno di una gestione più complessa, puoi utilizzare librerie aggiuntive come OpenCSV o Jackson per la manipolazione dei dati CSV e XML.