A linuagem XML(Extensible Markup Language) é uma linguagem com propósito de facilitar o tráfego de informações entre diversos sistemas(principalmente web). Ela auxilia a criação de documentos em um formato padrão, limpo, fácil e permite manipulação de seu conteúdo manualmente ou via programação independente da linguagem. Devido à essas características os arquivos XML são importantes no trasnporte de dados entre dois sistemas totalmente distintos.
Por exemplo, os famosos web services para funcionarem corretamente devem receber mensagens em XML, para processarem e se for o caso, retornar algo no mesmo formato.
Além disso, os arquivos em XML podem servir também como armazenadores de dados. E esse é exatamente o foco do post de hoje. Vamos ver como gerar um arquivo XML a partir de um banco de dados mysql via script php. É bom que podemos ver como criar um backup alternativo de uma base de informações.
Para o exemplo a seguir, imagine o banco de dados `newsletter` com a tabela contato(idcontato, nome, email).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php mysql_connect('localhost', 'root', 'sua_senha') or die ('Erro ao conectar'); mysql_select_db('newsletter') or die ('Erro ao conectar com o banco de dados'); $rs = mysql_query("SELECT idcontato, nome, email FROM contato ORDER BY idcontato"); $xml = "<?xml version='1.0' encoding='UTF-8'?>n";//cabeçalho do arquivo $xml .= "<Newsletter> n"; while($reg = mysql_fetch_object($rs)){ $xml .= "t<Contato>n"; $xml .= "tt<idcontato>$reg->idcontato</idcontato>n"; $xml .= "tt<nome>$reg->nome</nome>n"; $xml .= "tt<email>$reg->email</email> n"; $xml .= "t</Contato>n"; } $xml .= "</Newsletter>"; $ponteiro = fopen('backup.xml', 'w'); //cria um arquivo com o nome backup.xml fwrite($ponteiro, $xml); // salva conteúdo da variável $xml dentro do arquivo backup.xml $ponteiro = fclose($ponteiro); //fecha o arquivo ?> |
Não tem muitos segredos. Crio uma conexão com banco que irei buscar os dados. Depois faço uma consulta na tabela newsletter e armazeno o resultado em $rs. Na variável $xml eu armazenarei todas as marcações e informações que colocarei no arquivo XML. Crio um laço e percorro todos os resultados da consulta e vou adicionando-os na variável $xml. Por fim, eu crio um arquivo chamado backup.xml e abro ele com permissões de escrita(w). Coloco todo o código XML dentro desse arquivo e depois o fecho.
E pronto! Tenho um arquivo XML válido com todas as informações da minha tabela. Posso agora utilizar essas informações onde quiser ou simplesmente mantê-la guardada como uma cópia de segurança.
Abs
Siga-me no twitter: @rafaelwendel
Rafael, teria como eu pegar esse arquivo xml criado e usa-lo com o jquery ?
Olá Wellington,
Você pode importar as informações desse arquivo XML para um banco de dados MySQL e usá-las como bem entender. Veja esse post: http://www.rafaelwendel.com/2011/07/como-importar-dados-de-um-arquivo-xml/
Abs
Ola Rafael, eu estou ja ficando maluco com um portal em ASP, na verdade um meu amigo me deu o projeto e estou personalizando-o.
Dificuldade principal:
nao sei como obter os dados que preciso
EX: estou preencendo um formulario e gostaria de digitar o ceo e automaticamente os outros campos (estado,cidade,bairros) viessem preenchidos automaticamente (seria o ideal) mas tambem me bastaria poder ao digitar meu estado e poder ver a lista dos estados…assim como cidades.
Eu sei que e dura (para mim) e por isso ti peço uma ajuda.
Obrigado
Olá Ildemir, me desculpe mas não sou muito adepto à linguagem ASP devido a uma série de fatores que agora não vem ao caso.
Talvez você procurando um site ou fórum especializado nessa linguagem você consiga resolver seus problemas.
Obrigado pela visita.
Abs
Rafael como vai? Parabéns pelos posts – Será que eu estou desatento pois não vi ninguém fazer a mesma pergunta que vou fazer, quais são os dados que devo colocar ao criar o arquivo com o nome backup . xml – Obrigado antecipadamente.
Josepe
Fiz certinho como o exemplo mais não cria meu arquivo xml rodando localhost. Mais rodando em ftp web funciona.
Tem alguma configuração para fazer local para rodar. Estou tentando em localhost windows.
Preciso muito de sua ajuda.
Olá Adriano,
Aparece algum erro? Se sim, qual?
Abs!
Blz Fera!
Funcionou tudo ok. Porem preciso salvar o arquivo “backup.xml” em outro lugar.
Como faço para dar um caminho e salvar o arquivo em outra pasta?
Olá Saron,
É só alterar a linha 18. Ex:
Abs!
Refiz todo o script e rodou muito bem mas ele salva o arquivo numa pasta, eu gostaria de exibir o arquivo no navegador diretamente no ato da consulta. Poderia me dar uma luz de como fazer?
Olá Francisco Jr,
É só você dar um “echo” na variável $xml.
Att.
Que bom que existem pessoas como você @Rafael disposta a compartilhar conhecimento, dito isso gostaria se possível de uma dica de como fazer para “juntar” duas tabelas no xml criado, fiz alguns teste com o INNER JOIN, mas não tive sucesso.
Valeu
Marco,
A consulta em si é indiferente, pois você montará o XML a partir dos dados retornados. Se quiser pode colocar o seu exemplo para que eu possa dar dicas.
Abs
Olá Rafael, eu tenho mais duas duvidas se puder me ajudar.
1) pra que servem os “enes” e os “tes”;
2) como eu escrevo um dos campos para usar o “CDATA”;
Valeu!
Olá Marco,
Os “enes” são para saltar uma linha (efeito do ENTER) e os “tes” para ir para a direita (efeito do TAB).
o CDATA pode usar normal. Qual a dúvida especificamente?
Abs
Teria algum modo de gerar um xml a partir de varias tabelas?
Sim, basta fazer o seu select com joins.
Abs!