ASP - Gerando XML a partir de uma tabela Access
Active Server Pages - ASP - revolucionou a criação de páginas dinâmicas para Web. Quem não se lembra de sua primeira página ASP e da sensação de 'vitória' por ter conseguido criar uma página dinâmica que gera dados a partir da interação com o usuário.
Apesar das muitas críticas , é claro que ASP esta longe de ser perfeita , temos que confessar : "sem ASP talvez a história do desenvolvimento para web hoje não fosse a mesma coisa".
Creio que o grande mérito das tecnologias que cativam , fazem sucesso e teimam em continuar a serem usadas apesar de tudo é sua simplicidade e facilidade de utilização. Com certeza uma dessas tecnologias é ASP.
Neste artigo vou mostrar como gerar arquivo XML de forma dinâmica ( on the fly) a partir de uma tabela Access.
Suponha que você tenha uma tabela com os dados do seus clientes e que precise gerar uma página com visualização XML dos dados dos seus clientes. Com ASP isto é moleza...
As etapas as serem cumpridas são : (é claro que existem diversas outras possibilidades com nível de complexidade e refinamento maior)
Abaixo o jeitão de uma possível página HTML
A partir principal do código esta no link vinculado ao texto - Gerar XML - o seu código é dado a seguir :
<font face="Arial Black"><b><a href="geraxml.asp">Gerar XML</font></a></b></font></p>
O arquivo geraxml.asp é que irá fazer todo o serviço. Seu código e visto a seguir:
<%@ LANGUAGE="VBSCRIPT" %> <% 'Variáveis Dim sql Dim rst Dim bd Dim provedor 'Instrução SQL - selecionando registros da tabela clientes sql = "Select * from clientes " 'Definindo um provedor e instanciando e abrindo um objeto conexao provedor = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& Server.MapPath("\dados\clientes.mdb") Set bd = Server.CreateObject("ADODB.Connection") bd.Open provedor 'Instanciando e abrindo objeto recordset Set rst = Server.CreateObject("ADODB.RecordSet") rst.Open sql, bd, 3, 3 'O contentType é o responsável pelo conteúdo da página, 'informamos que o browser apresentará resposta em XML Response.ContentType="text/xml" %> <!--Tags XML com campos da fonte de dados clientes--> <?xml version="1.0" encoding="iso-8859-1"?> <clientes> <%Do while Not rst.EOF%> <cliente> <nome><%=rst(1).value%></nome> <cidade><%=rst(3).value%></cidade> <cep><%=rst(2).value%></cep> <estado><%=rst(4).value%></estado> </cliente> <%rst.MoveNext : Loop%> </clientes> <% 'Fechando os objetos criados rst.close Set rst = nothing bd.close Set bd = nothing %> |
No código acima destacamos:
- A string de conexão usando um provedor OLE DB
. (preferível a uma conexão ODBC.)
A string para conexão ODBC seria : "DRIVER={Microsoft
Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\dados\clientes.mdb")
- A abertura do recordset usa os parâmetros numéricos -
rst.Open sql, bd, 3, 3 -
pois não estou usando o arquivo adovbs.inc
. A correspondência é exibida na tabela abaixo :
'----
valores para CursorTypeEnum ---- Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 '---- valores de LockTypeEnum ---- Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 '---- valores de CursorLocationEnum ---- Const adUseServer = 2 Const adUseClient = 3 |
- O contentType e a tag de cabeçalho para o arquivo XML devem ser cuidadosamente declarados:
Response.ContentType="text/xml" %> <!--Tags XML com campos da fonte de dados clientes--> <?xml version="1.0" encoding="iso-8859-1"?> |
- Eu estou usando os índices para se referir
aos campos do recordset : rst(1) , rst(2) , rst(3) e rst(4) (não é muito
legível mas é mais rápido)
- Atenção cuidado com o caminho do arquivo .mdb . Para
testar o script não esqueça de alterar conforme sua configuração.
Ao clicar no link o arquivo de script acima
irá gerar o arquivo XML conforme abaixo:
Para gerar o arquivo em disco poderiamos usar o objeto FileSystemObject. (que tal exercitar ??)
Pegue os arquivos do artigo artigo : aqui:
Eu sei , é apenas ASP , mas eu gosto...
José Carlos Macoratti