[XML] Generar XML con SQL 2005.


Saludos amigos, en esta ocasión estoy preparando algunos ejemplos de como generar código XML desde consultas en SQL 2005, algunas de las opciones más sencillas y rápidas para obtener datos con formato XML son:

Tabla a la cual aplicaremos las consultas:

image

Primera forma de obtener XML con la clausula FOR XML AUTO: 

SELECT * FROM dbo.USUARIO_SYS AS Usuario
FOR XML AUTO, TYPE, ROOT('Usuarios')

Devuelve un nodo Raíz llamado Usuarios y un nodo Usuario por cada una de las filas devueltas en la consulta, las cuales contienen atributos que son cada uno de los campos de la tabla.

<Usuarios>
  <Usuario id="7" nombre="Claudia" apellidos="Perez Torres" email="clau@mail.com" pass="a220109" fecha_add="2009-01-22T12:18:36.343" fecha_upd="2009-01-22T12:18:36.343" />
  <Usuario id="10" nombre="Ivan" apellidos="Rangel Cuadros" email="ivan@mail.com" pass="852465" fecha_add="2009-01-23T00:00:00" fecha_upd="2009-01-23T00:00:00" />
  <Usuario id="11" nombre="Carol" apellidos="Rangel" email="Zepeda" pass="789123" fecha_add="2009-01-23T00:00:00" fecha_upd="2009-01-23T00:00:00" />
  <Usuario id="12" nombre="Tin" apellidos="Tin" email="tin@tin.com" pass="456798" fecha_add="2009-01-24T00:00:00" fecha_upd="2009-01-24T00:00:00" />
</Usuarios>

 

Segunda forma con la clausula FOR XML RAW:

SELECT * FROM dbo.USUARIO_SYS AS Usuario
FOR XML RAW('NodoUsuario'), ROOT('Usuarios')

Devuelve el nodo raíz Usuarios, y por cada fila devuelta en la consulta un nodo llamado NodoUsuario, por lo tanto con RAW podemos asignar un nombre a cada fila de retorno de nuestras consultas.

<Usuarios>
  <NodoUsuario id="7" nombre="Claudia" apellidos="Perez Torres" email="clau@mail.com" pass="a220109" fecha_add="2009-01-22T12:18:36.343" fecha_upd="2009-01-22T12:18:36.343" />
  <NodoUsuario id="10" nombre="Ivan" apellidos="Rangel Cuadros" email="ivan@mail.com" pass="852465" fecha_add="2009-01-23T00:00:00" fecha_upd="2009-01-23T00:00:00" />
  <NodoUsuario id="11" nombre="Carol" apellidos="Rangel" email="Zepeda" pass="789123" fecha_add="2009-01-23T00:00:00" fecha_upd="2009-01-23T00:00:00" />
  <NodoUsuario id="12" nombre="Tin" apellidos="Tin" email="tin@tin.com" pass="456798" fecha_add="2009-01-24T00:00:00" fecha_upd="2009-01-24T00:00:00" />
</Usuarios>

 

Tercera forma con la clausula XML AUTO, Elements:

SELECT * FROM dbo.USUARIO_SYS AS Usuario
FOR XML AUTO, Elements, ROOT('Usuarios')

Devuelve un XML formado por elementos, es decir que por cada fila que devuelva la consulta se agregara al XML como un elemento y por cada columna se agregara un nodo sin atributos.

<Usuarios>
  <Usuario>
    <id>7</id>
    <nombre>Claudia</nombre>
    <apellidos>Perez Torres</apellidos>
    <email>clau@mail.com</email>
    <pass>a220109</pass>
    <fecha_add>2009-01-22T12:18:36.343</fecha_add>
    <fecha_upd>2009-01-22T12:18:36.343</fecha_upd>
  </Usuario>
  <Usuario>
    <id>10</id>
    <nombre>Ivan</nombre>
    <apellidos>Rangel Cuadros</apellidos>
    <email>ivan@mail.com</email>
    <pass>852465</pass>
    <fecha_add>2009-01-23T00:00:00</fecha_add>
    <fecha_upd>2009-01-23T00:00:00</fecha_upd>
  </Usuario>
  <Usuario>
    <id>11</id>
    <nombre>Carol</nombre>
    <apellidos>Rangel</apellidos>
    <email>Zepeda</email>
    <pass>789123</pass>
    <fecha_add>2009-01-23T00:00:00</fecha_add>
    <fecha_upd>2009-01-23T00:00:00</fecha_upd>
  </Usuario>
  <Usuario>
    <id>12</id>
    <nombre>Tin</nombre>
    <apellidos>Tin</apellidos>
    <email>tin@tin.com</email>
    <pass>456798</pass>
    <fecha_add>2009-01-24T00:00:00</fecha_add>
    <fecha_upd>2009-01-24T00:00:00</fecha_upd>
  </Usuario>
</Usuarios>

Estas son algunas de las formas de generar datos XML, espero y les sirva de ayuda, en otro post preparare información para guardar y consultar datos de variables o documentos XML.

Dejen comentarios!!!

Etiquetas de Technorati: ,,,,
    • fefo
    • 24/07/09

    buena data. Si podes posteate algun ejemplo usando la clausula Where

  1. No había encontrado a nadie que escribiera artículos tan interesantes como tan bien explicados, muchas Felicidades, sigue así y gracias a nombre de toda la comunidad !

    • charlie
    • 18/05/12

    interesante……. una consulta como podrias generar los tags xml con los valores de una tabla por ejemplo tengo una tabla llamada parametros y en ella 4 registros
    ID PARAMETRO:
    1 NOMBRE
    2 APELLIDO
    3 DOCUMENTO
    4 FECHA

    Y QUE GENERARA

    CARLOS
    GONZALES
    1111111
    12-12-2010

  2. Saludos Charlie, prepare este rápido ejemplo, espero te sea de ayuda.


    declare @myTable table(id bigint identity(1,1), nombre nvarchar(50),apellidos nvarchar(80),documento nvarchar(20), fecha datetime);

    INSERT INTO @myTable
    VALUES('Ivan', 'Rangel','111111', GETDATE()),
    ('Clau', 'Pérez','222333', GETDATE()),
    ('Nor', 'Rojas','897635', GETDATE());

    SELECT id, nombre, apellidos, documento, fecha
    FROM @myTable
    FOR XML RAW('parametro'), ROOT('parametros');

    SELECT id, nombre, apellidos, documento, CONVERT(nvarchar(15),fecha,103) as fecha
    FROM @myTable parametro
    FOR XML AUTO, Elements, ROOT('parametros');

    Resultado 1:

    <parametros>
      <parametro id="1" nombre="Ivan" apellidos="Rangel" documento="111111" fecha="2012-05-18T06:57:31.413" />
      <parametro id="2" nombre="Clau" apellidos="Pérez" documento="222333" fecha="2012-05-18T06:57:31.413" />
      <parametro id="3" nombre="Nor" apellidos="Rojas" documento="897635" fecha="2012-05-18T06:57:31.413" />
    </parametros>

    Resultado 2:

    <parametros>
      <parametro>
        <id>1</id>
        <nombre>Ivan</nombre>
        <apellidos>Rangel</apellidos>
        <documento>111111</documento>
        <fecha>18/05/2012</fecha>
      </parametro>
      <parametro>
        <id>2</id>
        <nombre>Clau</nombre>
        <apellidos>Pérez</apellidos>
        <documento>222333</documento>
        <fecha>18/05/2012</fecha>
      </parametro>
      <parametro>
        <id>3</id>
        <nombre>Nor</nombre>
        <apellidos>Rojas</apellidos>
        <documento>897635</documento>
        <fecha>18/05/2012</fecha>
      </parametro>
    </parametros>
    • Sara
    • 11/09/12

    HOLAS SHEVERE EL EJEMPLO ,QUISIERA EXPORTAR DATOS DE VARIAS TABLAS EN UN XML POR COMANDO BCP O HABRIA OTRA FORMA Y AGREGARLO A UNA TAREA PROGRAMADA ..PORFAVOR NECESITO SU AYUDA,,GRACIAS

  3. Gracias amigo este ejemplo me sirvió de mucho

    • ferrran
    • 29/01/13

    como consigo un fichero xml de este tipo, donde las etiquetas son variables :

    496
    523
    1256

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: