éléments XML présentent malgré des valeurs nulles
-
28-10-2019 - |
Question
J'ai une assez grande SELECT ... FOR XML PATH
. Comme vous le savez, par des éléments par défaut XML correspondant aux champs avec une valeur null ne figure pas dans l'arbre XML résultat. Il semble être un vrai problème pour moi et je veux toujours avoir tous les éléments apparaissent, si la valeur est nulle ou non.
Yat-il un moyen d'y parvenir sans l'entourer chaque champ par un de ISNULL(...,'')
par un (plus de 50 champs dans mon SELECT!) Et sans changer la FOR XML PATH
en FOR XML ELEMENTS
d'utiliser l'interrupteur XSINIL
(qui est malheureusement disponible uniquement avec ELEMENTS
) ?
Je soupçonne que ces 2 solutions entièrement non-statisfying entraînerait des sorties différentes, par la voie: <fieldname></fieldname>
et <fieldname/>
respectivement. Si possible, je préfèrerais le premier, mais je suis quand même hâte de lire vos suggestions précieuses.
Merci d'avance! : -)
La solution
sans modifier le XML pour le chemin en Pour les éléments XML pour utiliser le XSINIL Commutateur
Vous pouvez utiliser elements xsinil
avec for xml path
.
declare @T table (ID int identity, Name varchar(50))
insert into @T values ('Name1')
insert into @T values (null)
insert into @T values ('Name2')
select
ID,
Name
from @T
for xml path('item'), root('root'), elements xsinil
Résultat:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<item>
<ID>1</ID>
<Name>Name1</Name>
</item>
<item>
<ID>2</ID>
<Name xsi:nil="true" />
</item>
<item>
<ID>3</ID>
<Name>Name2</Name>
</item>
</root>