ASP - Gerando XML
No artigo ASP - Gerando XML , XLS e DOC no servidor mostrei uma das forma de gerar XML com ASP. Como o assunto é vasto e as possibilidades são múltiplas este artigo aborda uma outra forma de obter o mesmo resultado.
Na verdade um arquivo XML pode ser criado facilmente por qualquer editor de Textos (que tal o NotePad) e só abrir e digitar o texto respeitando o padrão para arquivos XML.
O problema é quando necessitamos gerar arquivos XML de forma dinâmica, neste caso dependendo da situação você pode adotar a estratégia mais adequada. Se você não precisa armazenar o arquivo gerado em disco pode gerar o arquivo XML em uma página ASP e enviar o arquivo como XML. Abaixo temos um exemplo de código que pode ser usado para criar o arquivo XML: aviso.xml:
<%
%> |
O cenário mais comum é você ter que gerar um arquivo XML a partir de informações que estão armazenadas em uma base de dados neste caso temos que usar a tecnologia ADO para acessar a fonte de dados. No exemplo abaixo estou acessando a base de dados Clientes.mdb e gerando um arquivo XML com as informações de nome, endereço e email da tabela Clientes.
<% Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.Connection") conn.provider="Microsoft.Jet.OLEDB.4.0;" conn.open server.mappath("Clientes.mdb") sql="select nome, endereco,email from Clientes" set rs = Conn.Execute(sql) rs.MoveFirst() response.write("<?xml version='1.0' ?>") response.write("<clientes>") while (not rs.EOF) response.write("<cliente>") response.write("<nome>" & rs("nome") & "</nome>") response.write("<endereco>" & rs("endereco") & "</endereco>") response.write("<email>" & rs("email") & "</email>") response.write("</cliente>") rs.MoveNext() wend rs.close() conn.close() response.write("</clientes>") %> |
Até o momento não tivemos a preocupação de gravar o arquivo gerado. Uma das formas de persistir o arquivo XML gerado é usar o objeto Microsoft.XMLDOM. No exemplo abaixo temos o código que realiza esta tarefa:
<% 'Instancia o objeto XMLDOM. Set xmldoc = Server.CreateObject("MSXML2.DOMDocument.4.0") 'Nome e caminho completo de onde será salvo o arquivo nome = "d:\teste\macoratti.xml" 'Carrega o arquivo se ele já existir arquivo = xmldoc.Load(nome) 'Se o arquivo existe então acaba o processo e destrói o objeto if arquivo = True Then Response.write "Arquivo já existente !" Set xmldoc = nothing Response.end end if 'O método createElement adiciona os elementos Set root = xmldoc.createElement("Macoratti.NET") xmldoc.appendChild (root) 'O método createProcessingInstruction possui 2 argumentos: o TARGET = "xml" e DATA = "version='1.0' encoding='ISO-8859-1'" Set inst = xmldoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'") xmldoc.insertBefore inst, root Set com = xmldoc.createComment("Documento xml de exemplo") xmldoc.insertBefore com, root Set onode = xmldoc.createElement("Opcoes") onode.Text = "Tudo para Visual Basic, ASP, XML, SQL e muito mais..." 'O método appendChild adiciona um elemento filho ao elemento atual xmldoc.documentElement.appendChild (onode) Set inode = xmldoc.createElement("Visual Basic") onode.appendChild (inode) Set child = xmldoc.createElement("Opcao") child.Text = "Tudo para Visual Basic e Visual Basic .NET" inode.appendChild (child) xmldoc.documentElement.appendChild (onode) Set inode = xmldoc.createElement("ASP") onode.appendChild (inode) Set child = xmldoc.createElement("Opcao") child.Text = "Tudo para ASP e ASP.NET" inode.appendChild (child) xmldoc.documentElement.appendChild (onode) Set inode = xmldoc.createElement("Outros") onode.appendChild (inode) Set child = xmldoc.createElement("Opcao") child.Text = "C# , XML, SQL, Crystal Reports e muito mais..." inode.appendChild (child) 'Salva o arquivo no caminho definido xmldoc.save (nome) Response.write "Arquivo gerado e salvo !" 'Destruindo os objetos usados Set xmldoc = Nothing Set root = Nothing Set inst = Nothing Set com = Nothing Set onode = Nothing Set inode = Nothing Set child = Nothing Set onode = Nothing Set inode = Nothing Set child = Nothing %> |
Executando o arquivo acima teremos o arquivo macoratti.xml gerado conforme figura abaixo:
Simples e objetivo não é mesmo...
Até o próximo artigo ASP ...
José Carlos Macoratti