Gerar XML com PHP

Gerando XML com PHP5

Vamos ver como gerar  um arquivo XML simples usando PHP5 e API DOM, se você não possui o PHP5 baixe o EasyPHP.


<?php
#versao do encoding xml
$dom = new DOMDocument("1.0", "ISO-8859-1");

#retirar os espacos em branco
$dom->preserveWhiteSpace = false;

#gerar o codigo
$dom->formatOutput = true;

#criando o nó principal (root)
$root = $dom->createElement("agenda");

#nó filho (contato)
$contato = $dom->createElement("contato");

#setanto nomes e atributos dos elementos xml (nós)
$nome = $dom->createElement("nome", "Rafael Clares");
$telefone = $dom->createElement("telefone", "(11) 5500-0055");
$endereco = $dom->createElement("endereco", "Av. longa n 1");

#adiciona os nós (informacaoes do contato) em contato
$contato->appendChild($nome);
$contato->appendChild($telefone);
$contato->appendChild($endereco);

#adiciona o nó contato em (root) agenda
$root->appendChild($contato);
$dom->appendChild($root);

# Para salvar o arquivo, descomente a linha
//$dom->save("contatos.xml");

#cabeçalho da página
header("Content-Type: text/xml");
# imprime o xml na tela
print $dom->saveXML();
?>

 

Neste exemplo utilizamos dados pré-definidos, mas poderiamos ter utilizado o resultado de uma consulta SQL.

Exemplo funcionando Exemplo XML

Agora, o resultado é excelente, porém, repetir esses comandos acima para cada contato é bem desgastante, vejamos uma função para automatizar a criação dos contatos.

<?php
function addContato($document, $nome, $fone, $end)
{
 #criar contato
 $contato = $document->createElement("contato");

 #criar nó nome
 $nomeElm = $document->createElement("nome", $nome);

 #fone
 $foneElm = $document->createElement("telefone", $fone);

 #endereco
 $endElm = $document->createElement("endereco", $end);

 $contato->appendChild($nomeElm);
 $contato->appendChild($foneElm);
 $contato->appendChild($endElm);
 return $contato;
}

$dom = new DOMDocument("1.0", "ISO-8859-1");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

$root = $dom->createElement("agenda");

#utilizando a funcao para criar contatos
$Tiao = addContato($dom, "Tiao J.", "5555-4444", "R. Jaú, 3");
$Joao = addContato($dom, "Joao S.", "4444-5555", "R. Itú, 4");

#adicionando no root
$root->appendChild($Tiao);
$root->appendChild($Joao);
$dom->appendChild($root);

#salvando o arquivo
$dom->save("agenda.xml");

#mostrar dados na tela
header("Content-Type: text/xml");
print $dom->saveXML();

?>

A função acima produz o mesmo resultado que o primeiro exemplo, porém de uma forma mais simples na hora de criar os contatos, sendo assim para utilizar em seus estudos aconselho utilizar a função do segundo exemplo.

Exemplo funcionando Exemplo XML utilizando a função

Leia o outro post sobre gerar XML com PHP em :
http://clares.com.br/2009/09/29/gerar-xml-com-php5-e-xmlwriter/

Este outro post é ainda mais simples de entender.

Até a próxima,

Rafael Clares

Comments

  1. By Michel

    Responder

  2. By clares

    Responder

  3. By Laerti Borba

    Responder

  4. By Ivaldo Trentin

    Responder

  5. By Glauber

    Responder

  6. Responder

    • Responder

  7. Responder

    • Responder

  8. By Bruno

    Responder

  9. By Cadu

    Responder

  10. By Jose Ricardo

    Responder

  11. By Alcir

    Responder

  12. By fernando

    Responder

  13. By Neto

    Responder

  14. By Diogo

    Responder

    • Responder

  15. Responder

  16. By Tamar

    Responder

    • Responder

  17. By Giancarlo

    Responder

    • Responder

  18. By dyegoreisa

    Responder

  19. By Samuel

    Responder

  20. By valmir santos

    Responder

  21. By panetony

    Responder

    • Responder

  22. Responder

    • Responder

  23. Responder

  24. Responder

    • Responder

  25. By Tiago Sutil

    Responder

    • Responder

      • By Tiago Sutil

        Responder

  26. Responder

  27. By Samuel

    Responder

  28. By Jean Carlos

    Responder

    • Responder

      • By Jean Carlos

        Responder

        • Responder

  29. By Mel Oliveira

    Responder

    • By Rafael Clares

      Responder

  30. By Mel Oliveira

    Responder

    • By Rafael Clares

      Responder

      • By Mel Oliveira

        Responder

  31. By Felipe

    Responder

    • By Rafael Clares

      Responder

  32. By fe

    Responder

    • By Rafael Clares

      Responder

      • By Alexandre Athayde

        Responder

        • Responder

  33. By Leo

    Responder

    • Responder

  34. By Renato

    Responder

    • Responder

  35. By Paulo Henrique

    Responder

    • Responder

  36. By Eric Souza

    Responder

    • Responder

  37. By Jaison Martins

    Responder

  38. By rafael stromdahl

    Responder

Perguntas duplicadas ou cujo a resposta esteja nos comentários serão ignoradas.
Comentários com códigos serão ignorados(para isso, use o pastebin.com e informe aqui o link).
Faça sua pergunta e "aguarde" ser aprovada para aparecer no blog.
Aguarde sua resposta, ela não é em tempo real, tenha paciência!

Deixe seu comentário