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
Posts relacionados:
- Função para montar combobox com dados do banco
- Conectar aplicação php com banco de dados mysql e postgre
- Criar banco de dados MySQL através do ErWIN
- Principais comandos php para bancos mysql
Rafael Wendel Pinheiro
É formado em Sistemas de Informação e pós-graduado em Sistemas de Banco de Dados. Trabalha com o desenvolvimento de sites, sistemas e outras soluções web.





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