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 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
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=18&topic_id=5081&post_id=20964