Importare un file XML

In questo esempio vediamo come importare un file xml e scrivere i dati all’interno del database usando degli oggetti datarow per rendere l’operazione più semplice. Nello specifico realizzeremo un piccolo importatore di articoli. Lo script è un’azione da associare direttamente al programma.

Gruppo ScriptEvento
ProgrammaAzione Programma
documento = program.loadxmldocument()
if documento == nil then
        do return end
end

Per prima cosa creiamo un oggetto documento che conterrà tutto il file xml. Se non viene inserito il percorso tra le parentesi, il programma mostrerà la schermata di selezione dei file. Questa operazione varia in base al tipo di sistema operativo perché ognuno ha le proprie regole di gestione dei file.

testaarticoli = documento.getelementbyname("Articoli")
if testaarticoli == nil then
        program.showerror("Errore su xml (Articoli).Impossibile continuare!")
        do return end
end

Estrapoliamo il primo nodo del file xml. Naturalmente dobbiamo sapere come si chiamano i vari nodi e nel caso venga richiesto un nodo che non esiste il programma ridarà null e uscirà.

articoli = testaarticoli.getelementbyname("Elenco")

Estrapoliamo il sotto nodo contenente tutti gli articoli.

for i,riga in pairs(articoli) do
        codice = riga.getelementbyname("Codice").getvalue()
        tarticoli = database.getsql("SELECT * FROM articoli WHERE codice='" .. codice .. "'")
        if tarticoli.countrows() ~= 0 then
               rigaarticolo = tarticoli.getrows()[1]
        else
               rigaarticolo = database.newdatarow("articoli")
        end
        rigaarticolo.setvalue("descrizione",riga.getelementbyname("Descrizione").getvalue())
        rigaarticolo.setvalue("prezzo",tonumber(riga.getelementbyname("Prezzo").getvalue()))
        if rigaarticolo.save() == false then
               program.showerror(errorn.errormessage)
               do return end
        end
end

Giriamo tutti gli articoli e, attraverso il codice, controlliamo se quest’ultimo è già presente all’interno del database oppure no. In caso negativo creiamo una nuova riga.

Come ultima operazione recuperiamo i valori che vogliamo dal file xml e salviamo la riga.