Importare fisier XML

In acest exemplu, vedem cum este importat un fisier XML si cum se scriu datele in baza de date folosind obiecte datarow pentru a simplifica operatia. Mai exact, vom crea un mic importator de articole. Script-ul este o actiune care trebuie asociata direct cu programul.

Grup Script

Program

Eveniment

Actiune program


document = program.loadxmldocument()

if document == nil then

do return end

end

Mai intai cream un obiect document care va contine intregul fisier XML. Daca parcursul nu este introdus intre paranteze, programul va afisa ecranul de selectare a fisierelor. Aceasta operatie variaza in functie de tipul de sistem de operare deoarece, fiecare are propriile sale reguli de gestionare a fisierelor.

headitems = document.getelementbyname("Items")

if headitems == nil then

program.showerror("Error in xml (Items) .Unable to continue!")

do return end

end

Extragem primul nod al fisierului XML. Desigur, trebuie sa stim cum se numesc diferitele noduri si, daca este solicitat un nod care nu exista, programul va afisa null si va iesi.

items= headitems.getelementbyname("Elenco")

Extragem sub-nodul care contine toate articolele.

for i,row in pairs(items) do

code= row.getelementbyname("Code").getvalue()

titems= database.getsql("SELECT * FROM items WHERE code='" .. code .. "'")

if titems.countrows() ~= 0 then

rowitem = titems.getrows()[1]

else

rowitem= database.newdatarow("items")

end

rowitem.setvalue("description",row.getelementbyname("Description").getvalue())

rowitem.setvalue("price",tonumber(row.getelementbyname("Price").getvalue()))

if rowitem.save() == false then

program.showerror(errorn.errormessage)

do return end

end

end


Rasfoim toate articolele si, cu ajutorul codului, verificam daca acesta din urma este deja prezent in baza de date sau nu. Daca nu, vom crea un rand nou.

Ca ultim pas, recuperam valorile dorite din fisierul XML si salvam randul.