Importer un fichier XML

Dans cet exemple nous voyons comment importer un fichier xml et écrire les données à l’intérieur de la base de données en utilisant des objets datarow pour rendre l’opération plus simple. En particulier, nous allons créer un petit importateur d’articles. Le script est une action à associer directement au logiciel.

Groupe ScriptÉvénement
ProgrammeAction Programme
document = program.loadxmldocument()
if document == nil then
        do return end
end

D’abord nous créons un objet document qui contiendra tout le fichier xml. Si le chemin n’est pas saisi entre parenthèses, le logiciel affichera l’écran de sélection de fichiers. Cette opération varie selon le type de système d’exploitation parce que chacun a ses propres règles de gestion de fichiers.

headitems = document.getelementbyname("Items")
if headitems == nil then
        program.showerror("Error in xml (Items) .Unable to continue!")
        do return end
end

Nous extrayons le premier nœud du fichier xml. Bien sûr, nous devons savoir comment s’appellent les nœuds et au cas où il serait demandé un nœud qui n’existe pas, le programme redonnera null et sortira.

items= headitems.getelementbyname("List")

Nous extrayons le sous-noeud contenant tous les articles.

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

Nous tournons tous les articles et, avec le code, nous vérifions si ce dernier est déjà présent dans la base de données ou pas. En cas de réponse négative nous créons une nouvelle ligne.

Comme dernière opération nous récupérons les valeurs que nous voulons dans le fichier xml et nous enregistrons la ligne.