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 ScriptEvento
ProgramaAcció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.