Gerando arquivos XML com SQL Server

A partir do SQL Server 2000 é possível extrair de um banco de dados, de maneira direta, dados no formato XML.  Esta funcionalidade é de grande ajuda quando falamos de integrações com diversos sistemas, ou extrações de dados para relatórios, dispositivos móveis, arquivos portáveis e etc.

Para gerar um arquivo XML utilizamos a instrução FOR XML, que pode vir acompanhada das opções: RAW, AUTO e EXPLICIT.

Por exemplo, a instrução abaixo:

SELECT cdcliente, nmcliente

      FROM dbo.cliente FOR XML raw

Essa instrução nos retornará o seguinte XML:

<row cdcliente=“1” nmcliente=“SQL Server Day”/>

<row cdcliente=“2” nmcliente=“DotNetDay”/>

<row cdcliente=“3” nmcliente=“SQL Saturday Night”/>

<row cdcliente=“4” nmcliente=“Cliente A”/>

<row cdcliente=“5” nmcliente=“Cliente B”/>

<row cdcliente=“6” nmcliente=“Cliente C”/>

<row cdcliente=“7” nmcliente=“Cliente D”/>

A instrução FOR XML com a opção RAW cria o elemento ROW e cada campo é transformado em atributo desse elemento.

A instrução FOR XML com a opção AUTO utiliza o nome da tabela como delimitador de elementos, essa opção pode vir acompanhada do argumento opcional ELEMENT acompanhe o código a seguir:

SELECT cdcliente, nmcliente

      FROM dbo.cliente FOR XML AUTO, ELEMENTS

Este código irá gerar o retorno abaixo:

<dbo.cliente>
    <cdcliente>1</cdcliente>
    <nmcliente>SQL Server Day</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>2</cdcliente>
    <nmcliente>DotNetDay</nmcliente>
</dbo.cliente>
    <dbo.cliente><cdcliente>3</cdcliente>
    <nmcliente>SQL Saturday Night</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>4</cdcliente>
    <nmcliente>Cliente A</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>5</cdcliente>
    <nmcliente>Cliente B</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>6</cdcliente>
    <nmcliente>Cliente C</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>7</cdcliente>
    <nmcliente>Cliente D</nmcliente>
</dbo.cliente>

É importante lembrar que o arquivo XML deve ser composto de u elemento Raíz, veja o retorno à cima com o elemento Raíz:

<Cliente>    
    <dbo.cliente>
        <cdcliente>1</cdcliente>
        <nmcliente>SQL Server Day</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>2</cdcliente>
        <nmcliente>DotNetDay</nmcliente>
    </dbo.cliente>
        <dbo.cliente><cdcliente>3</cdcliente>
        <nmcliente>SQL Saturday Night</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>4</cdcliente>
        <nmcliente>Cliente A</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>5</cdcliente>
        <nmcliente>Cliente B</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>6</cdcliente>
        <nmcliente>Cliente C</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>7</cdcliente>
        <nmcliente>Cliente D</nmcliente>
    </dbo.cliente>
</Cliente>

É muito simples fazer extração para XML desta forma. Aguardo comentários, dúvidas ou sugestões.

Abraços, Rodrigo

2 comentários em “Gerando arquivos XML com SQL Server

  1. Crespi,
    Preciso de ajuda, não sou muito fluente no .NET e preciso fazer esse código em VB.NET você poderia quebrar meu galho?
    Obrigado desde já.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.