Exportando dados do banco para um arquivo XML

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

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. 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

    1. 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

  2. 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

  3. 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.

    1. Olá Saron,

      É só alterar a linha 18. Ex:

      18
      
      $ponteiro = fopen('caminho/da/sua/pasta/backup.xml', 'w'); //cria um arquivo com o nome backup.xml

      Abs!

  4. 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?

  5. 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

  6. 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!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *