Il y a des situations où une personne peut ne pas vouloir du XML bien formé - celle que j'ai rencontrée (et peut-être l'affiche originale) utilisait la technique For XML Path pour renvoyer une liste de champs unique d'éléments 'enfants' via une requête récursive. Plus d'informations sur cette technique sont ici (spécifiquement dans la section 'Les méthodes XML de la boîte noire'):Concaténation des valeurs de ligne dans Transact-SQL
Pour ma situation, voir 'H&E' (une tache de pathologie) transformé en 'XML bien formé' a été une vraie déception. Heureusement, j'ai trouvé une solution... la page suivante m'a aidé à résoudre ce problème relativement facilement et sans avoir à ré-architecturer ma requête récursive ou à ajouter une analyse supplémentaire au niveau de la présentation (pour cela ainsi que pour d'autres/futures situations où mon enfant -les champs de données des lignes contiennent des caractères XML réservés) :Gestion des caractères spéciaux avec FOR XML PATH
EDIT :code ci-dessous à partir de l'article de blog référencé.
select
stuff(
(select ', <' + name + '>'
from sys.databases
where database_id > 4
order by name
for xml path(''), root('MyString'), type
).value('/MyString[1]','varchar(max)')
, 1, 2, '') as namelist;