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