A partir de una tabla en SQL se puede formatear a un tipo XML
de la siguiente manera:
DECLARE @T AS TABLE (IdClient INT, ClientName VARCHAR(30), Telephone VARCHAR(30))
INSERT INTO @T
SELECT 1, 'Benjamin Last', '00155-45-01' UNION ALL
SELECT 2, 'John Brown', '00157-99-57' UNION ALL
SELECT 3, 'Math Kenedy', '00177-77-98'
------------------ TABLE
SELECT * FROM @T
SELECT * FROM @T
FOR XML PATH
RESULT...
Al abrir el XML:
<row>
<IdCliet>1</IdCliet>
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</row>
<row>
<IdCliet>2</IdCliet>
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</row>
<row>
<IdCliet>3</IdCliet>
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</row>
Ejemplo: 2
para sustiuir el nombre del elemento padre <row> por <Client>
hará falta colocarle un parámetro al PATH
SELECT * FROM @T
FOR XML PATH ('Client')
<Client>
<IdCliet>1</IdCliet>
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</Client>
<Client>
<IdCliet>2</IdCliet>
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</Client>
<Client>
<IdCliet>3</IdCliet>
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</Client>
Ejemplo: 3
------------------------------------------------------------------- ROOT
Para colocarle un encabezado principal sería
agregando el ROOT con su parametro:
SELECT * FROM @T
FOR XML PATH ('Client'), ROOT ('Main')
<Main>
<Client>
<IdCliet>1</IdCliet>
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</Client>
<Client>
<IdCliet>2</IdCliet>
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</Client>
<Client>
<IdCliet>3</IdCliet>
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</Client>
</Main>
Ejemplo: 4
------------------------------------------------------------------- RAW
Al cambiar el PATH por el RAW, se crea un formato diferente...
SELECT * FROM @T
FOR XML RAW ('Client'), ROOT ('Main')
<Main>
<Client IdCliet="1" ClientName="Benjamin Last" Telephone="00155-45-01" />
<Client IdCliet="2" ClientName="John Brown" Telephone="00157-99-57" />
<Client IdCliet="3" ClientName="Math Kenedy" Telephone="00177-77-98" />
</Main>
Ejemplo: 5
------------------------------------------------------------------- RAW + ELEMENTS
Con la sentencia RAW + ELEMENTS, se genera algo muy parecido a lo que ejecuta la sentencia PATH...
SELECT * FROM @T
FOR XML RAW('Client'),ELEMENTS, ROOT('Main')
<Main>
<Client>
<IdCliet>1</IdCliet>
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</Client>
<Client>
<IdCliet>2</IdCliet>
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</Client>
<Client>
<IdCliet>3</IdCliet>
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</Client>
</Main>
Ejemplo: 6
------------------------------------------------------------------- ATRIBUTOS | PATH
Para colocarle un atributo al XML sería de la siguiente forma:
Ejemplo: 6
------------------------------------------------------------------- ATRIBUTOS | PATH
Para colocarle un atributo al XML sería de la siguiente forma:
------------------- TO XML
SELECT
IdClient as [@IdClient]
,ClientName
,Telephone
FROM @T
FOR XML PATH('Client'),ELEMENTS, ROOT('Main')
<Main>
<Client IdClient="1">
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</Client>
<Client IdClient="2">
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</Client>
<Client IdClient="3">
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</Client>
</Main>
CÓDIGO T-SQL
DECLARE @T AS TABLE (IdClient INT, ClientName VARCHAR(30), Telephone VARCHAR(30))
INSERT INTO @T
SELECT 1, 'Benjamin Last', '00155-45-01' UNION ALL
SELECT 2, 'John Brown', '00157-99-57' UNION ALL
SELECT 3, 'Math Kenedy', '00177-77-98'
------------------ TABLE
SELECT * FROM @T
------------------- TO XML
SELECT
IdClient as [@IdClient]
,ClientName
,Telephone
FROM @T
FOR XML PATH('Client'),ELEMENTS, ROOT('Main')
<Main>
<Client IdClient="1">
<ClientName>Benjamin Last</ClientName>
<Telephone>00155-45-01</Telephone>
</Client>
<Client IdClient="2">
<ClientName>John Brown</ClientName>
<Telephone>00157-99-57</Telephone>
</Client>
<Client IdClient="3">
<ClientName>Math Kenedy</ClientName>
<Telephone>00177-77-98</Telephone>
</Client>
</Main>
No hay comentarios.:
Publicar un comentario