Cadastrando
Primeiro temos que ter o XML pronto, como um Banco de Dados com suas “Colunas” já estruturadas. Adicionei três tags a ele e uma principal, as tags são nome, email e telefone, junto com a tag usuario, que fecha o registro e junto com a tag cadastro que chega o “pacote”. Então vamos lá:
Banco.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<cadastro>
<usuario>
<nome>teste nome</nome>
<email>teste email</email>
<telefone>teste telefone</telefone>
</usuario>
</cadastro>
Deixei a estrutura fixa, já com as tags nome, email e telefone, já preenchidas para só seguirem a base, saber do que cada elemento é composto.
XML criado então é só criar uma página chamada Cadastro.asp, dentro dela criar um formulário com os campos de Nome, E-Mail e Telefone e um botão para salvar, tudo em tags HTML mesmo.
Na mesma página fiz uma otimização, coloquei o código de cadastramento em ASP dentro da mesma página e ativei o script através do click do botão “Enviar”, finalizando fica assim:
Cadastro.asp
<%@ Language=”VBScript” %>
<html>
<body>
<a href=”Cadastro.asp”>CADASTRAR</a> – <a href=”Listar.asp”>LISTAR</a>
<br><br>
<form action=”Cadastro.asp” method=”post”>
<b>Nome: </b><input type=”text” name=”Nome”><br>
<b>E-Mail: </b><input type=”text” name=”EMail”><br>
<b>Telefone: </b><input type=”text” name=”Telefone”><br>
<input type=”submit” value=”Cadastrar” name=”btCad”>
</form>
</body>
</html>
<%
‘ Cadastrando dentro do arquivo XML
If Request.Form(”btCad”) = “Cadastrar” Then
Dim Nome, EMail, Telefone, Banco
Nome = Request.Form(”Nome”)
EMail = Request.Form(”EMail”)
Telefone = Request.Form(”Telefone”)
Banco = Server.MapPath(”Banco.xml”)
Set DocMT = Server.CreateObject(”Microsoft.XMLDOM”) ‘ Criando Objeto
DocMT.Load(Banco)
Set RaizXML = DocMT.documentElement
Set CriarReg = DocMT.createElement(”usuario”)
RaizXML.appendChild(CriarReg)
‘ Funcção para criar objetos dentro do XML
Function AlimentarXML(NomeElemento, NomeVariavel)
Set Campo = DocMT.createElement(””&NomeElemento&””)
Campo.Text = NomeVariavel
CriarReg.appendChild(Campo) ‘ Linha de criação de Objetos
End Function
Call AlimentarXML(”nome”, Nome)
Call AlimentarXML(”email”, EMail)
Call AlimentarXML(”telefone”, Telefone)
DocMT.Save(Banco)
Response.Write(”<script>alert(’Cadastrado com Sucesso!’);location=’Cadastro.asp’</script>”)
Set DocMT = Nothing
End If
%>
Para ficar mais fácil, deixei o código todo comentado, mas algumas linhas serão esclarecidas:
Para inserir dados no XML, usei o Microsoft.XMLDOM para conexão. Em cada inserção adiciono uma tag usuario com essa linha abaixo:
Set CriarReg = DocMT.createElement(“usuario”)
Como são três tags para ser alimentadas usei uma função de minha autoria para fazer esse trabalho, a [cor2]AlimentarXML[/cor2] e adiciono com a linha Call AlimentarXML(“nome”, Nome) e salvo tudo através do DocMT.Save(Banco) e pronto, é só testar e ver se o XML está sendo manipulado corretamente:
OBS: Quando testei no meu localhost, o arquivo Cadastro.asp deu erro de acesso. Teste ele em um servidor web e funcionou, caso isso aconteçam com vocês também.
De primeira, vamos organizar o arquivo Visualizar.xsl:
Visualizar.xsl
<?xml version=”1.0″?>
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/TR/WD-xsl”>
<xsl:template match=”/”>
<center>
<font color=”#000000″ size=”2″ face=”MS Sans Serif”>Visualizando Dados</font>
<table width=”465″ border=”1″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”117″ height=”22″><div align=”center”><strong>Nome</strong></div></td>
<td width=”125″><div align=”center”><strong>E-mail</strong></div></td>
<td width=”107″><div align=”center”><strong>Telefone</strong></div></td>
<td width=”106″><div align=”center”><strong>Ações</strong></div></td>
</tr>
<xsl:for-each select=”cadastro/usuario”>
<tr align=”center”>
<td height=”22″><xsl:value-of select=”nome”/></td>
<td><xsl:value-of select=”email”/></td>
<td><xsl:value-of select=”telefone”/></td>
<td><a><xsl:attribute name=”href”>Editar.asp?nome=<xsl:value-of select=”nome”/><xsl:value-of select=”link”/></xsl:attribute>Editar</a>/<a><xsl:attribute name=”href”>Listar.asp?nome=<xsl:value-of select=”nome”/><xsl:value-of select=”link”/></xsl:attribute>Apagar</a></td>
</tr>
</xsl:for-each>
</table>
</center>
</xsl:template>
</xsl:stylesheet>
Com o stylesheet (que não vem ao caso explicar no momento) vamos fazendo a estrutura de visualização de todos os elementos da tag usuario através de um for-each assim:
<xsl:for-each select=”cadastro/usuario”> e fechando com </xsl:for-each>
Pegamos o valor dos elementos com essa estrutura aqui: <xsl:value-of select=”nome_da_tag”/>.
Usamos o atributo <xsl:attribute name=”href”> para gerar links, no nosso caso para excluir e editar (que não será mostrado nesse artigo).
Em uma página chamada Listar.asp criamos os objetos para chamar o XML e o XSL e integrá-los com o transformNode:
Set XMLDOC = Server.CreateObject(“Microsoft.XMLDOM”)
XSLDOC.Load(Server.MapPath(“Visualizar.xsl”))
Response.Write(XMLDOC.transformNode(XSLDOC))
Listar.asp
<%@ Language="VBScript" %>
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<%
Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
Listando Dados
XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))
Deletando Dados
If CStr(Request.QueryString("Nome")) <> "" Then
Banco = Server.MapPath("Banco.xml") ' Chamando o Arquivo XML para sofrer alteração
XMLDOC.Load(Banco)Set RaizXML = XMLDOC.documentElement
Set AlterarReg = RaizXML.selectSingleNode("usuario[nome='"&Request.QueryString("nome")&"']")
RaizXML.removeChild(AlterarReg) ' Linha de remoção de ObjetosXMLDOC.Save(Banco)
Response.Write("<script>alert('Deletado com Sucesso!');location='Listar.asp'</script>")
End IfSet XSLDOC = Nothing
Set XMLDOC = Nothing
%>
</body>
</html> Uma observação: tentei fazer o mais fácil possível para garantir um bom entendimento na hora da programação. Qualquer alteração no código para facilitar os comandos será bem-vinda, então vamos lá.
Criem um arquivo chamado Editar.asp e nele serão lidas todas as tags que contém no arquivo Banco.xml , mas com a querystring passada pelo arquivo Ler.asp que criamos no artigo anterior. Vamos só alterar uma única tag, um único nó do XML. Lembrando que usei uma tag "nome": mas vocês poderiam criar uma tag "id" e colocar números seqüenciais ou randômicos, a escolha fica a critério.Vamos primeiro listar todos os registros.<%@ Language="VBScript" %><% Dim Banco : Banco = Server.MapPath("Banco.xml")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") Set objLER = Server.CreateObject("Microsoft.XMLDOM") XMLDOC.Load(Banco) Set objLER = XMLDOC.getElementsByTagName("*")%>
Logo abaixo desse script vamos criar o formulário com um “for” fazendo a varredura nas tags para pegar só o valor de tag citado na querystring passada:
%>
<b>Nome: </b><input type=”text” name=”Nome” value=”<% Response.Write(objLER.Item(i).Text) %>”><br>
<b>E-Mail: </b><input type=”text” name=”EMail” value=”<% Response.Write(objLER.Item(i+1).Text) %>”><br>
<b>Telefone: </b><input type=”text” name=”Telefone” value=”<% Response.Write(objLER.Item(i+2).Text) %>”><br>
<%
End If
Next
%>
<input type=”submit” value=”Editar” name=”btEdt”>
</form>
</body>
</html>
Reparem a linha onde temos If objLER.Item(i).Text = “”&Request.QueryString(“nome”)&”" Then, é ela que está “selecionando” a tag que quero mostrar.
E por fim a edição:
For i = 0 To (objLER.length – 1)
If objLER.Item(i).Text = “”&CampoUpdate&”" Then
objLER.Item(i).Text = Nome
objLER.Item(i+1).Text = EMail
objLER.Item(i+2).Text = Telefone
End If
Next
XMLDOC.Save(Banco)
Response.Write(“<script>alert(‘Editado com Sucesso!’);location=’Listar.asp’</script>”)
Set objLER_upDate = Nothing
End If
Set objLER = Nothing
Set XMLDOC = Nothing
%>
Coloquei a querystring passada em um campo hidden e joguei ele dentro de um “for“, como fiz no formulário, em seguida troquei os valores pelas variáveis em seqüência, Nome, EMail e Telefone, salvei com o método XMLDOC.Save e passei um alert em JavaScript e pronto!!
Esse tipo de utilização do XML serve para coisas pequenas, por exemplo, um combo de país, cidades de um determinado estado, cores, dentre outros.
RSS Feed
Twitter
Posted in
Tags: 
e continue acessando nossos conteudos, qualquer coisa só comentar..
vlw
Abraço
o que inviabiliza tudo!
http://www.radiortr.xpg.com.br/carlos.asp o xml esta dentro tambem.
vlw
Obrigado pela participaçao no debugando.com
Abraço
osmio22@hotmail.com
pode mandar nesse email
se possivel me envia uma solução
lucasgdf@gmail.com