Convertire csv in xml
Convertire csv in xml è un’esigenza comune, con questo breve script in python è semplicissimo.
import csv import xml.etree.ElementTree as ET from xml.dom.minidom import parse, parseString def csv_to_xml(csv_file_path, xml_file_path): # Apri il file CSV in lettura with open(csv_file_path, 'r') as csv_file: # Leggi i dati dal file CSV csv_reader = csv.reader(csv_file) headers = next(csv_reader) # Assume che la prima riga sia l'intestazione data = list(csv_reader) # Crea un elemento radice per l'XML root = ET.Element("data") c = 0 # Itera sui dati e crea gli elementi XML for row in data: record = ET.SubElement(root, "record") c=c+1 # Aggiungi un attributo "id" incrementale ed eventuali altri attributi # In questo caso aggiungiamo anche un model per generare dati utilizzabili nel software ERP odoo # record.set("id", "map_id_"+str(c)) record.set("model", "res.region.province.mapping") for i in range(len(headers)): field = ET.SubElement(record, headers[i]) field.text = row[i] # Crea l'albero XML tree = ET.ElementTree(root) # Scrivi l'albero XML nel file XML with open(xml_file_path, 'wb') as xml_file: tree.write(xml_file, encoding='utf-8', xml_declaration=True) # Leggi il file XML appena creato e riscrivilo con indentazione per renderlo più leggibile con prettyxml with open(xml_file_path, 'r') as xml_file: content = xml_file.read() content = parseString(content).toprettyxml(indent=" ") with open(xml_file_path, 'w') as xml_file: xml_file.write(content) # Esempio di utilizzo csv_file_path = 'province.csv' # Sostituisci con il percorso del tuo file CSV xml_file_path = 'xmloutput.xml' # Sostituisci con il percorso desiderato per il file XML csv_to_xml(csv_file_path, xml_file_path)
Se non avete confidenza con python e non sapete come eseguire questo script potete vedere questo link per eseguire un programma python da windows oppure chiedere a chatgpt ! 🙂