Bonjour,
Voici une procedure qui permer d'enregistrer un arbre en fichier xml
très pratique pour transporter ...
on passe le champ arbre dans la procedure (dans l'exemple c Arbre1)
puis le chemindufichierxml a creer
puis le nom de l'arbre xml
PROCEDURE ArbreVersXML(Arbre1,cheminxml est chaîne,nomarbrexml est une chaîne)
i est entier
XMLDocument("branches")
XMLAjouteFils("branches","ArbreVersXML","")
XMLAjouteAttribut("branches","Nom_Arbre_XML",nomarbrexml)
POUR i=1 A ArbreOccurrence(Arbre1)
SI (ChaîneOccurrence(Arbre1[i],TAB) = 0) ALORS // on prends que les racines
XMLAjouteFils("branches","parent","",Vrai)
XMLAjouteAttribut("branches","nombranche",Arbre1[i])
XMLAjouteAttribut("branches","iddoublon",ArbreRécupèreIdentifiant(Arbre1,Arbre1[i]))
ArbreListeFils(Arbre1,Arbre1[i],"listefils") // on liste les enfants de la racine en cours
XMLRacine("branches") // on revient a la racine de l'arbre xml
FIN
FIN
fSauveTexte(cheminxml,XMLConstruitChaîne("branches"))
XMLTermine("branches")
Procedure callback
PROCEDURE listefils(Arbre1, CheminFils, FilsTrouvé, Niveau, Pointeur)
XMLAjouteFils("branches","enfant","",Vrai)
XMLAjouteAttribut("branches","nombranche",FilsTrouvé)
XMLAjouteAttribut("branches","iddoublon",ArbreRécupèreIdentifiant(Arbre1,CheminFils+FilsTrouvé))
SI ArbreTypeElément(Arbre1,CheminFils+FilsTrouvé) <> aNoeud ALORS // si ce n'est pas un noeud alors on revient au dessus
XMLParent("branches")
FIN