Importar un archivo XML

En este ejemplo, vemos cómo importar un archivo xml y escribir datos dentro de la base de datos utilizando objetos datarow para facilitar la operación. Específicamente, crearemos un pequeño importador de productos. El script es una acción que se asociará directamente con el programa.

Grupo Script

Programa

Evento

Acción Programa


document = program.loadxmldocument()

if document == nil then

do return end

end

Primero creamos un objeto de documento que contendrá todo el archivo xml. Si no se ingresa la ruta entre los corchetes, el programa mostrará la pantalla de selección de archivos. Esta operación varía según el tipo de sistema operativo porque cada uno tiene sus propias reglas de administración de archivos.

headitems = document.getelementbyname("Items")

if headitems == nil then

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

do return end

end

Extrapolamos el primer nodo del archivo xml. Por supuesto, necesitamos saber cómo se llaman los distintos nodos y si se solicita un nodo que no existe, el programa devolverá null y saldrá.

items= headitems.getelementbyname("List")

Extrapolamos el subnodo que contiene todos los productos (items).

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


Pasamos todos los productos y, a través del código (code), verificamos si este último ya está presente en la base de datos o no. Si no, creemos una nueva línea.

Como último paso recuperamos los valores que queremos del archivo xml y guardamos la línea