[CONTRIBUTION] ArbreVersXML

Posté par floman321 le 24/4/2007 18:50:20
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

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=18&topic_id=5081&post_id=20964