import xml.dom.minidom
import csv
document=""
with open("beniculturali.xml","r") as file:
    for line in file:
        document+=line

#deserializzazione dati e creazione DOM
mioDom = xml.dom.minidom.parseString(document)

#imposto il tag dell'elemento base
strutture = mioDom.getElementsByTagName("row")

#Recupero tutti i nomi dei tag dentro l'elemento base
names = []
for nodo in strutture[0].childNodes:
    if nodo.childNodes != (): #Evito di considerare i dati e i caratteri "\n"
        # print(node.tagName)
        names += [nodo.tagName]

# Ora posso usare i nomi per creare un dizionario
# da scrivere sul file con CSV
with open('estratto.csv', 'w') as csvfile:
    # creo il writer dizionario per sfruttare i nomi dei tag
    #print(names)
    writer = csv.DictWriter(csvfile, fieldnames=names)
    writer.writeheader()  # scrive l’intestazione
    # per ogni elemento riempi il dizionario e scrivilo con writerow
    for struttura in strutture:
        dictTemp={}
        for tag in names:
            element = struttura.getElementsByTagName(tag)[0]
            dictTemp[tag]=element.firstChild.data
        writer.writerow(dictTemp)