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

Programme

Événement

Action 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.