jueves, 1 de octubre de 2015

TABLA A XML

Ejemplo: 1

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:

------------------- 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