Il est quelque fois nécessaire de changer de format de données. Si on reçoit par exemple une réponse de WebService au format XML et que l'on doit passer en paramètre à une fonction ce même résultat au format JSON.
Plutôt que de déclarer les structures correspondantes, je vous propose une fonction générique qui parcours le contenu XML pour le convertir en JSON.
// Résumé : Converti un donnée XML en donnée JSON
// Syntaxe :
//[ <Résultat> est un JSON = ] XMLVersJSON (<ObjetXML> est xmlDocument)
//
PROCÉDURE XMLVersJSON(ObjetXML est un xmlDocument)
// Création des éléments de l'objet JSON
ObjetJSON est un JSON
// Liste des Noeuds de l'objet XML qui seront convertis en XML
ListeMembres(ObjetXML..NoeudRacine[1],ObjetJSON)
PROCÉDURE INTERNE ListeMembres(_ObjetXML est un xmlNoeud,_ObjetJSON est un JSON)
tabJSON est un tableau de JSON
// Parcours des noeuds
POUR TOUT UnNoeud DE _ObjetXML..NoeudFils
// Pour chaque Noeud on ajoute un membre JSON et on rappelle la fonction
UnMembreJSON est un JSON
UnMembreJSON..Nom=UnNoeud..Nom
SI UnNoeud..Texte="" ALORS
soit ind = TableauAjoute(_ObjetJSON..Membre,UnMembreJSON)
ListeMembres(UnNoeud,_ObjetJSON..Membre[ind])
SINON
SI UnNoeud..Nom = "element" ALORS
// C'est un tableau
TableauAjoute(tabJSON,UnNoeud..Texte)
SINON
// C'est un membre simple
UnMembreJSON..Valeur=UnNoeud..Texte
TableauAjoute(_ObjetJSON..Membre,UnMembreJSON)
FIN
FIN
FIN
//si un Tableau est en attente, on l'Ajoute
SI tabJSON..Occurrence<>0 ALORS
TableauAjoute(_ObjetJSON,tabJSON)
FIN
FIN
RENVOYER ObjetJSON
|