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
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á.
Grande Artur,vc não foi o único a me questionar então veja o post. http://www.blog.crespidb.com.br/blogcrespi/post/2010/02/22/Gerando-retorno-XML-com-Visual-Studio-2010.aspx
Abraços, Rodrigo