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 Script

Programma

Evento

Azione 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.