Problème de caractères d'échappement dans XML à plusieurs niveaux hiéarrchiques
Posté : jeu. 26 août 2021, 14:33:28
Bonjour à tous,
je vous expose ma problématique :
Je tente de produire un flux xml à 4 niveaux hiérarchiques. J'utilise les fonctions sql XMLAGG dans différentes vues sql afin d'agréger mes données.
Cela fonctionne bien dans l'ensemble mais il y a une petite particularité (il faut bien pimenter les choses
) : au niveau 3 (niveau de facture), je dois regrouper toutes les lignes de facture (niveau 4) mais aussi un groupe d'éléments synthétisant les codes TVA de la facture. Comme on ne peut par xmlagg agréger que sur un seul champ, j'ai créé un champ caractère recevant mon niveau "TVA" sous forme de "xml" (que j'ai alimenté par une requête du type XMLSERIALIZE(XMLAGG ...).
Le souci, c'est que quand j'utilise ce champ pour produire mon niveau 3, tous les caractères "<" et ">" ont été remplacés par les caractères d'échappement du xml "<" et ">".
J'ai essayé de remplacer tous les "<" et ">" de mon champ par "<" et ">" avant production du xml du niveau 3 mais ce n'est pas mieux, je me retrouve avec de "&" en plus (logique : le système a remplacé tous les "&" de mon champ alpha par le caractère d'échappement "&" !!!).
Quelqu'un voit-il une solution ?
Question subsidiaire : les fonctions sql produisant les éléments xml ne respectent pas la casse du nom que j'ai précisé dans le paramètre "name". Exemple : xmlforest(trim(lifour) as "SupName" produit <supname> (les majuscules de début de mot ont disparues).
je vous expose ma problématique :
Je tente de produire un flux xml à 4 niveaux hiérarchiques. J'utilise les fonctions sql XMLAGG dans différentes vues sql afin d'agréger mes données.
Cela fonctionne bien dans l'ensemble mais il y a une petite particularité (il faut bien pimenter les choses

Le souci, c'est que quand j'utilise ce champ pour produire mon niveau 3, tous les caractères "<" et ">" ont été remplacés par les caractères d'échappement du xml "<" et ">".
J'ai essayé de remplacer tous les "<" et ">" de mon champ par "<" et ">" avant production du xml du niveau 3 mais ce n'est pas mieux, je me retrouve avec de "&" en plus (logique : le système a remplacé tous les "&" de mon champ alpha par le caractère d'échappement "&" !!!).
Quelqu'un voit-il une solution ?
Question subsidiaire : les fonctions sql produisant les éléments xml ne respectent pas la casse du nom que j'ai précisé dans le paramètre "name". Exemple : xmlforest(trim(lifour) as "SupName" produit <supname> (les majuscules de début de mot ont disparues).