Lire XML avec SQL Server parent/enfant
Résolu/Fermé
alexmilano
Messages postés
423
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
-
Modifié par alexmilano le 29/02/2016 à 17:43
alexmilano Messages postés 423 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 30 novembre 2017 - 3 mars 2016 à 15:24
alexmilano Messages postés 423 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 30 novembre 2017 - 3 mars 2016 à 15:24
A voir également:
- Lire XML avec SQL Server parent/enfant
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire epub - Guide
- Xml viewer - Télécharger - Édition & Programmation
- Lire fichier bin - Guide
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
1 réponse
alexmilano
Messages postés
423
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
30 novembre 2017
27
3 mars 2016 à 15:24
3 mars 2016 à 15:24
Pour information, j'ai trouvé. Au cas où quelqu'un en ait besoin un jour ...
DECLARE @X XML
SET @X = '
<polymenus>
<actions>
<params>
<actionparams>
<TITLE>Test 1</TITLE>
</actionparams>
</params>
<subactions>
<actions>
<params>
<actionparams>
<TITLE>Test 2</TITLE>
</actionparams>
</params>
<subactions>
<actions>
<params>
<actionparams>
<TITLE>Test 3</TITLE>
</actionparams>
</params>
</subactions>
</actions>
<actions>
<params>
<actionparams>
<TITLE>Test 2 Bis</TITLE>
</actionparams>
</params>
</actions>
</subactions>
</actions>
</polymenus>'
SELECT D1.value('(params/actionparams/TITLE)[1]', 'varchar(100)') Actions
FROM (SELECT @X X) X
CROSS APPLY X.nodes('//actions') AS N1(D1)
UNION
SELECT
D1.value('(params/actionparams/TITLE)[1]', 'varchar(100)') +
CASE WHEN D2.value('(params/actionparams/TITLE)[1]', 'varchar(100)') IS NULL THEN '' ELSE ' - ' + D2.value('(params/actionparams/TITLE)[1]', 'varchar(100)') +
CASE WHEN D3.value('(params/actionparams/TITLE)[1]', 'nvarchar(100)') IS NULL THEN '' ELSE ' - ' + D3.value('(params/actionparams/TITLE)[1]', 'nvarchar(100)')
END
END Actions
FROM (SELECT @X X) X
CROSS APPLY X.nodes('//actions') AS N1(D1)
OUTER APPLY D1.nodes('subactions/actions') AS N2(D2)
OUTER APPLY D2.nodes('subactions/actions') as N3(D3)
ORDER BY Actions
DECLARE @X XML
SET @X = '
<polymenus>
<actions>
<params>
<actionparams>
<TITLE>Test 1</TITLE>
</actionparams>
</params>
<subactions>
<actions>
<params>
<actionparams>
<TITLE>Test 2</TITLE>
</actionparams>
</params>
<subactions>
<actions>
<params>
<actionparams>
<TITLE>Test 3</TITLE>
</actionparams>
</params>
</subactions>
</actions>
<actions>
<params>
<actionparams>
<TITLE>Test 2 Bis</TITLE>
</actionparams>
</params>
</actions>
</subactions>
</actions>
</polymenus>'
SELECT D1.value('(params/actionparams/TITLE)[1]', 'varchar(100)') Actions
FROM (SELECT @X X) X
CROSS APPLY X.nodes('//actions') AS N1(D1)
UNION
SELECT
D1.value('(params/actionparams/TITLE)[1]', 'varchar(100)') +
CASE WHEN D2.value('(params/actionparams/TITLE)[1]', 'varchar(100)') IS NULL THEN '' ELSE ' - ' + D2.value('(params/actionparams/TITLE)[1]', 'varchar(100)') +
CASE WHEN D3.value('(params/actionparams/TITLE)[1]', 'nvarchar(100)') IS NULL THEN '' ELSE ' - ' + D3.value('(params/actionparams/TITLE)[1]', 'nvarchar(100)')
END
END Actions
FROM (SELECT @X X) X
CROSS APPLY X.nodes('//actions') AS N1(D1)
OUTER APPLY D1.nodes('subactions/actions') AS N2(D2)
OUTER APPLY D2.nodes('subactions/actions') as N3(D3)
ORDER BY Actions