SQL Server Basico 7 – Gerando um XML

Algumas pessoas pessoas possuem muitas duvidas quanto ao tipo de arquivo XML, a questão é que um arquivo XML pode parecer muito complexo quando olhado pela primeira vez, porem, com o passar do tempo se tornara bem intuitivo, simples e facil de ser utilizado.

O que é um arquivo XML?
Um arquivo XML é um arquivo estruturado de texto, ou seja, aonde o texto no arquivo segue um padrão, assim como em programação HTML.

O que tem um arquivo XML?
Basicamente um arquivo XML possui tags(Que são denominadas nós) e as informações em si.

Um exemplo…..

<Empresa>
	<Funcionarios>
		<Nome>Fabrizzio</Nome>
		<Nome> Giovanni</Nome>
	</Functionarios>
</Empresa>

Neste artigo (O primeiro de uma serie sobre XML), colocarei o basico sobre como criar uma estrutura XML a partir de uma tabela.

Abaixo explicações e codificações.


CREATE TABLE Funcionarios
(
	Id_Departamento INT,
	nm_Funcionario VARCHAR(100),
	sn_Funcionario VARCHAR(100)
)

INSERT INTO Funcionarios VALUES
(1, 'Fabrizzio','Caputo'),
(2, 'Camila', 'Lira'),
(1, 'Marco', 'Caputo')

SELECT *
FROM Funcionarios

--Criando uma estrutura XML basica de forma automatica
SELECT *
FROM Funcionarios
FOR XML AUTO
/*
<Funcionarios Id_Departamento="1" nm_Funcionario="Fabrizzio" sn_Funcionario="Caputo" />
<Funcionarios Id_Departamento="2" nm_Funcionario="Camila" sn_Funcionario="Lira" />
<Funcionarios Id_Departamento="1" nm_Funcionario="Marco" sn_Funcionario="Caputo" />
*/

--CRIANDO DE FORMA AUTOMATICA ESPECIFICANDO UM ROOT
SELECT *
FROM Funcionarios
FOR XML AUTO, ROOT('Empresa')
/*
<Empresa>
  <Funcionarios Id_Departamento="1" nm_Funcionario="Fabrizzio" sn_Funcionario="Caputo" />
  <Funcionarios Id_Departamento="2" nm_Funcionario="Camila" sn_Funcionario="Lira" />
  <Funcionarios Id_Departamento="1" nm_Funcionario="Marco" sn_Funcionario="Caputo" />
</Empresa>
*/
/*
Por que é importante colocar um root?
	Tendo em vista e necessidade de se manter sempre as boas praticas em programação, seja para voce ou para as demais
	pessoas que irão utilizar e mexer no seu sistema, colocar o root faz com que nunca exista informações jogadas em um 

arquivo XML
*/

--GERANDO INFORMAÇÕES ENTRE TAGS
SELECT Id_Departamento, nm_Funcionario, sn_Funcionario
FROM Funcionarios
FOR XML PATH('Empresa'), ROOT('Geral')
/*
<Geral>
  <Empresa>
    <Id_Departamento>1</Id_Departamento>
    <nm_Funcionario>Fabrizzio</nm_Funcionario>
    <sn_Funcionario>Caputo</sn_Funcionario>
  </Empresa>
  <Empresa>
    <Id_Departamento>2</Id_Departamento>
    <nm_Funcionario>Camila</nm_Funcionario>
    <sn_Funcionario>Lira</sn_Funcionario>
  </Empresa>
  <Empresa>
    <Id_Departamento>1</Id_Departamento>
    <nm_Funcionario>Marco</nm_Funcionario>
    <sn_Funcionario>Caputo</sn_Funcionario>
  </Empresa>
</Geral>
*/

--MESCLANDO INFORMAÇÕES NAS TAGS E ENTRE TAGS
SELECT Id_Departamento As '@Dpto', nm_Funcionario, sn_Funcionario
FROM Funcionarios
FOR XML PATH('Empresa'), ROOT('Geral')
/*
<Geral>
  <Empresa Dpto="1">
    <nm_Funcionario>Fabrizzio</nm_Funcionario>
    <sn_Funcionario>Caputo</sn_Funcionario>
  </Empresa>
  <Empresa Dpto="2">
    <nm_Funcionario>Camila</nm_Funcionario>
    <sn_Funcionario>Lira</sn_Funcionario>
  </Empresa>
  <Empresa Dpto="1">
    <nm_Funcionario>Marco</nm_Funcionario>
    <sn_Funcionario>Caputo</sn_Funcionario>
  </Empresa>
</Geral>
*/
Anúncios
Post a comment or leave a trackback: Trackback URL.

Comentários

  • Alexandre.  On 08/02/2012 at 12:24

    Só pra entender, qualquer coluna que eu precise que seja um atributo dentro de um XML é só colocar o @ na frende do nome ?

    • fabrizziocaputo  On 08/02/2012 at 12:29

      Ale,

      De forma simples, sim. Claro que para construções mais complexas sera necessario organizar o select antes de gerar o XML, seja com CTE (boa saida) ou com subquerys mesmo (Saida mais simples), porem lembre-se que se apenas colocar “@” na frente, ele ficara como um atributo dentro do XPATH, que no caso do exemplo, é o “\Empresa”.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: