Rafael Clares


Gerar XML com PHP e XMLWriter
Setembro 29, 2009, 11:26 pm
Arquivado em: PHP, XML

Olá,
Mais um exemplo de como gerar XML com PHP5,  neste caso iremos utilizar a Classe nativa do PHP5  o XMLWriter para gerar a saída XML formatada.

Este exemplo, sem dúvidas é bem mais simples que o anterior que utiliza o DOM ou SimpleXML.

Vejamos o código:

<?
# Instancia do objeto XMLWriter
$xml = new XMLWriter;

# Cria memoria para armazenar a saida
$xml->openMemory();

# Inicia o cabeçalho do documento XML
$xml->startDocument( '1.0' , 'iso-8859-1' );

# Adiciona/Inicia um Elemento / Nó Pai <item>
$xml->startElement("item");

#  Adiciona um Nó Filho <quantidade> e valor 8
$xml->writeElement("quantidade", 8);

#  Adiciona um Nó Filho <preco> e valor 110
$xml->writeElement("preco", 110);

#  Finaliza o Nó Pai / Elemento <Item>
$xml->endElement();

#  Configura a saida do conteúdo para o formato XML
header( 'Content-type: text/xml' );

# Imprime os dados armazenados
print $xml->outputMemory(true);

# Salvando o arquivo em disco
# retorna erro se o header foi definido
# retorna erro se outputMemory já foi chamado
$file = fopen('foo.xml','w+');
fwrite($file,$xml->outputMemory(true));
fclose($file);
?>

Obs: A chamada ao método $xml->outputMemory() descarrega os dados da memória então você só consegue chama-lo uma vez, logo, para salvar o arquivo você não pode ter chamado este método ainda.

Para salvar o arquivo corretamente você deve comentar as linhas abaixo:

# header( ‘Content-type: text/xml’ );
# print $xml->outputMemory(true);

Comente as linhas abaixo para apenas exibir o XML no browser:

# $file = fopen(‘foo.xml’,'w+’);
# fwrite($file,$xml->outputMemory(true));
# fclose($file);

Referência: http://br.php.net/manual/pt_BR/book.xmlwriter.php

 

Por enquanto é isso galera, bom divertimento e até mais.



Busca em XML com PHP
Dezembro 4, 2008, 1:12 am
Arquivado em: PHP, XML | Tags: , ,

Efetuando uma busca em um arquivo XML utilizando PHP5

Vimos em um outro post como ler um arquivo XML utilizando o SimpleXML, agora veremos como efetuar uma busca dentro de um arquivo XML.

Gerar, ler  e transportar dados através em XML se tornou algo padrão em qualquer software seja on-line ou não. A partir disso podemos pensar:
- Antes de enviar dados em XML nós selecionamos adequadamente o que ele irá transportar.
Legal, é assim mesmo, nós selecionamos os dados do BD, geramos o XML e enviamos ou disponibilizamos para outro software.
Ok, mas e o software que vai receber esses dados? Ele não sabe o que está recebendo, não é?
Então pensando nisso nós escreveremos agora o código em PHP que terá o objetivo de ler o conteúdo do XML e selecionar apenas o que lhe interessa, assim como acontece na geração do arquivo.
A idéia a princípio e como todas as demais contidas nesse bloguinho é muito simples e servirá para que vocês possam a partir disso desenvolver linhas de raciocínios melhores ;)

Bem, a idéia é parecida com a do outro post, por isso aconselho dar uma lida nele antes.
Considerando que você acabou de ler o post sobre SimpleXML vamos começar o arquivo XML.

chamamos o arquivo de estante.xml

<?xml version=”1.0″ encoding=”iso-8859-1″?>
   <livros>
  <livro>
   <cod>01</cod>
   <titulo>PHP para iniciantes</titulo>
   <descricao>Desenvolvendo Aplicações web</descricao>
   <autor>Manuel da Silva</autor>
   <paginas>200</paginas>
   <preco>50.00</preco>
  </livro>
  <livro>
   <cod>02</cod>
   <titulo>XML</titulo>
   <descricao>Usando XML com PHP </descricao>
   <autor>José das Couves</autor>
   <paginas>100</paginas>
   <preco>150.00</preco>
  </livro> 
  <livro>
   <cod>03</cod>
   <titulo>Javascript</titulo>
   <descricao>O Poder do javascript</descricao>
   <autor>Billy Borny</autor>
   <paginas>80</paginas>
   <preco>90.90</preco>
  </livro>  
  </livros>

Como pode perceber o conteúdo do XML são livros e suas propriedades, então
Na tag “livros” possui 3 tags “livro” ou seja “livros” é a raiz e “livros”  são o que chamamos de “nós“,
para cada tag livro existe o cod, titulo, descricao, autor, paginas e preco, o último é justamente o que iremos utilizar em nosso exemplo,  iremos selecionar livros do XML de acordo com o preço que especificarmos.
Para isso precisamos ler o XML e fazer a seleção de acordo com os parâmetros que  escolheremos.

o arquivo principal chamei-o de index.php mas você pode chamar de pamela.php se quiser.

<?php
# Carrega e armazena o XML na variavel $xml
$xml = simplexml_load_file(“estante.xml”);
# laço dentro da tag livro para cada tag livro que encontrar
foreach($xml->xpath(‘//livro‘) as $livro)
{
    # armazena na var $registro o conteudo de uma tag livro
    $registro = simplexml_load_string($livro->asXML());
    # executa uma consulta XPath e armazena em $busca
    $busca = $registro->xpath(‘//preco[.>55.00]‘);
    # verificando se houve alguma busca com sucesso
    if($busca){
       # exibindo os resultados encontrados
        echo $livro->titulo . “<br>”;
        echo $livro->descricao . “<br>”;
        echo $livro->preco . “<br><br>”;
    }
}

?>

Acho que tem pouco para explicar sobre o PHP devido os comentários do código.
Mas, básicamente o que ocorre é que nós após carregarmos o arquivo XML efetuamos na linha
$busca = $registro->xpath(‘//preco[.>55.00]‘);
a seguinte verificação:
- procure dentro das tags livro onde o preco seja maior que 55.00, se reparar no arquivo XML irá perceber que somente 2 livros (nós) atendem à nossa condição e são eles que são exibidos como resultado. Neste caso estamos exibindo somente o título, descrição e preço, claro que podemos exibir todo o conteúdo do livro.

Muito díficil não é? Pois é …

Acredito que vale a pena se aprofundar nessa idéia de  transporte de dados  com XML, além de ser muito prático permite que  dados de uma aplicação seja fácilmente integrados à qualquer outro sistema e esse parece ser o futuro do software, quando se fala em integração de sistemas não dá para pensar em outra coisa que não seja XML.

seguem alguns links:
- Post | Criando XML com PHP
- Post | Lendo XML com PHP
- Docs | SimpleXML | Consultas Xpath
- Exemplo | busca em xml 
- Download | busca em xml – fontes

Aproveite para responder essa…

Àté a próxima,
abraços

Rafael Clares,



Galeria de Fotos PHP + Flash + XML
Outubro 17, 2008, 3:46 am
Arquivado em: PHP, XML | Tags: , ,

Lendo um diretório com PHP, gerando um XML contendo o nome das fotos e exibindo com Flash.

A galeria consiste em uma animação Flash que lê um arquivo XML contendo o caminho e nome das fotos, então imaginei que poderíamos criar uma pequena rotina em PHP que fosse capaz de ler um diretório recuperar o nome dos arquivos de fotos e a partir disso gerar um XML com os dados. Isso nos faz evitar  ter que editar o XML a cada foto nova, assim, basta jogar a foto dentro do diretório e pronto.

Vejam os prints da Galeria, não acho que seja algo para um sistema, mas ficaria muito bacana em um site.

 

Vocês só vão entender quando ver funcionado.  Veja o exemplo on-line aqui.

Você pode arrastar as fotos mantendo pressionado o botão do mouse.
Para exibir/ampliar uma foto utilize o duplo click sobre a foto,
o mesmo deve acontencer para que ela seja minimizada.

Pessoal após ter liberado o download estou informando uma alteração que foi feita, o PHP agora verifica a extensão dos arquivos no diretório e caso a extensão não esteja no array $exts do arquivo PHP o arquivo lido não será adicionado ao XML,
Portanto, adicione as extensões que deseja na galeria na linha abaixo:

$exts = array(‘jpg’,'png’,'jpeg’,'gif’);     // 5º linha do arquivo PHP

Abraços,

Download do pacote atualizado e corrigido

Rafael Clares,



RSS – Inserindo notícias em seu site
Outubro 14, 2008, 12:33 am
Arquivado em: PHP, XML | Tags: , , , ,

 Pessoal tenho visto pela web muitas formas de inserir notícias em uma página utilizando RSS/XML, muitas dessas formas funcionam bem em qualquer situação e outras não. Resolvi postar aqui uma das que funcianam bem, claro, além de ser de simples alteração.

O arquivo abaixo retorna apenas os links das notícias, então o que vocês precisam fazer nada mais é que mudar o valor da var $feed inserindo a URL que desejar, a váriavel $qtdelinks informa a quantidade de links de notícias que retornarão ao fim das instruções, você pode mudar seu valor também. 

Escolha um local em seu site e use include(‘feeds.php’);  para incluir os links no site!

Salve-o como feeds.php

<?php
# Iniciando as variaveis

# Url do RSS / Feed
$feed = ‘http://feeds.folha.uol.com.br/folha/mundo/rss091.xml;
# Quantidade de links que serão exibidos
$qtdelinks=5;
# Variavel que aramazena os links
$html = ”;
# Variavel utilizada no laço x quantidade de links (set)
$i=0;
# Variavel que recebe os dados do url
$xml = ”;
# Abrindo o arquivo remoto
$fp = fopen($feed, ‘r‘);
while (!feof($fp))
{
    # Armazenando o conteudo do arquivo na variavel XML
    $xml .= fread($fp, 128);
}
# Fechando o arquivo
fclose($fp);

# Função que captura o conteudo das Tags
function untag2($string, $tag)
{
    $tmp = array();
    # Informando as tags passadas no parametro para obter o conteudo
    $preg = “|<$tag>(.*?)</$tag>|s”;
    # Obtendo o conteudo das tags passadas no param e adicionando em tags
    preg_match_all($preg, $string, $tags);
    # Para cada tag contida em no array tags
    foreach ($tags[1] as $tmptag)
    {
       # Adicionando no array tmp o conteudo das tags
        $tmp[] = $tmptag;
    }
    # Retornando um array com conteudo de cada tag 
    return $tmp;
}

# Retornando  o conteudo de todas as tags item  do RSS / XML
$items = untag2($xml, ‘item‘);

# Retornando cada tag item do array items
foreach ($items as $item)
{
   if ($i < $qtdelinks)
   {
      # Recuperando o conteudo da tag title
      $title = untag2($item, ‘title‘);
      # Recuperando o conteudo da tag href / link
      $link  = untag2($item, ‘link‘);
      # Armazenando o link na var html / utf8_decode trata os acentos no titulo
      $html .= ‘<a href=”‘.$link[0].‘” target=”_blank”>’.utf8_decode($title[0]).”</a><br>\n“;
      $i++;
   } 
}
# Exibindo o HTML gerado
echo $html;
?>

Utilize o CSS do seu site para formatar os links, não precisa alterar nada na variável($html) que concatena os links. Se preciso adicione apenas o atributo Class (se seu css já não estiver tratando todas as tags A href).

É isso aí, apenas.

O exemplo funcionando aqui.   Download do exemplo funcionando aqui.

Obrigado,

Rafael Clares



Ler XML com PHP
Agosto 17, 2008, 12:25 am
Arquivado em: XML | Tags: , ,

Lendo um arquivo XML com o PHP5

Veremos como ler um arquivo XML utilizando o método SimpleXML no PHP5, depois que escrevi como criar um arquivo XML com PHP nada mais interessante que saber como ler o arquivo.

Começaremos criando um arquivo XML bem simples, escreva o código abaixo e salve como:

livros.xml

<?xml version=”1.0″ encoding=”iso-8859-1″?>
   <livros>
  <livro>
   <cod>01</cod>
   <titulo>PHP para iniciantes</titulo>
   <descricao>Desenvolvendo Aplicações web</descricao>
   <autor>Manuel da Silva</autor>
   <paginas>200</paginas>
   <preco>5.00</preco>
  </livro>
  <livro>
   <cod>02</cod>
   <titulo>XML</titulo>
   <descricao>Usando XML com PHP </descricao>
   <autor>José das Couves</autor>
   <paginas>100</paginas>
   <preco>15.00</preco>
  </livro>
</livros> 

Agora que já temos o XML vamos criar o arquivo PHP, salve-o com o nome que quiser.

index.php

<?
#carrega o arquivo XML e retornando um Array
$xml = simplexml_load_file(“livros.xml”);
# se o xml for um link e nao um arquivo como livros.xml, troque -o pelo link ex.
# $xml = simplexml_load_file(“http://endereco/link/mesmoQueNaoTenhaExtensaoXML/“);

#para cada nó LIVRO  atribui à variavel $livro (obj simplexml)
foreach($xml->livro as $livro)
{
 echo $livro->cod;
 #usando o utf8_decode para exibir com acentos
 echo utf8_decode($livro->titulo);
 echo utf8_decode($livro->autor);
 echo utf8_decode($livro->descricao);
 echo $livro->preco;
 echo “<br>”;
}
?>

Muito simples! O nome do método não é em vão! ;)

Bem, agora basta você formatar a saida dos dados, utilize tags html formatadas com CSS, um exemplo pode ser como abaixo:

echo “<p><b>Título:</b> “ .utf8_decode($livro->titulo) . “</p>”;

Como está no comentário no código, a função simplexml_load_file carrega um arquivo XML retornando seu conteúdo em um Array, se quiser ver o formato desse array criado pela função e atribuído à variável $xml, utilize a função do PHP print_r que serve para exibir um array na tela. O resultado será como mostrado abaixo:

O comando print_r($xml) resultará em:

SimpleXMLElement Object
(
    [livro] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [cod] => 01
                    [titulo] => PHP para iniciantes
                    [descricao] => Desenvolvendo Aplicações web
                    [autor] => Manuel da Silva
                    [paginas] => 200
                    [preco] => 5.00
                )

            [1] => SimpleXMLElement Object
                (
                    [cod] => 02
                    [titulo] => XML
                    [descricao] => Usando XML com PHP
                    [autor] => José das Couves
                    [paginas] => 100
                    [preco] => 15.00
                )

            [2] => SimpleXMLElement Object
                (
                    [cod] => 03
                    [titulo] => Javascript
                    [descricao] => O Poder do javascript
                    [autor] => Billy Borny
                    [paginas] => 80
                    [preco] => 9.90
                )

        )

)

Links:

Documentação do SimpleXML:  SimpleXML
Documentação do utf8_decode: utf8_decode

Abraços e até o próximo post.  ;)

 



Gerando gráficos com PHP + FusionCharts
Agosto 10, 2008, 2:50 am
Arquivado em: PHP, XML | Tags: , , , ,

Gráficos 3D Animados com PHP  + XML + Flash

Olá Galera, após ter falado um pouco sobre gráficos com o PHPlot, na sequência estou apresentando maravilhoso gráfico gerado com o FusionCharts, esse cara aí nos permite criar belíssimos gráficos em flash!

O FusionCharts é um produto comercial, eu já tinha utilizado em uma outra ocasião porém não me recordo de terem uma versão free, mas a alguns dias entrei no site da FC e meus olhos brilharam com o anúncio ”Free Version” !

Chega de conversa, eu me empolguei !  ; )

O FusionCharts permite gerar gráficos nas liguagens PHP, ASP, CSNET, VBNET e Javascript, em todos os casos você pode setar através dos métodos do FC os valores para o gráfico, porém existe a forma que acredito ser a mais simples e prática para o exemplo que é através de XML. Podemos criar um arquivo xml com os dados desejados e informar na aplicação o endereço do XML ou podemos apenas criar no próprio código uma variável com os dados do XML, a segunda opção seria ideal no caso de ler uma tabela do banco.

Exemplo do XML para um gráfico de barras:

Clique para ampliar

clique para ampliar

 

E básicamente é apenas disso que precisamos enviar para a o arquivo PHP e Flash.

A linha 1 do XML contém o o atributo xAxisName que repesenta as colunas do gráfico e também o atributo yAxisName que representa as linhas do gráfico, observe no gráfico abaixo:
O XML pode receber mais parâmetros na primeira linha, como título do gráfico e outros, consulte os docs.

Clique para ampliar

clique para ampliar

Agora que já vimos que precisamos de um XML e sabemos como deve ser sua estrutura, vamos para o PHP.

Primeiro exemplo
- Usando um arquivo XML – Precisamos dos seguintes diretórios e arquivos:

- diretório data e dentro dele o arquivo xml chamado dados.xml (como o do exemplo)
- diretório charts com os arquivos flash que recebem o XML e geram o gráfico
- diretório includes com os arquivos FusionCharts.php e fusioncharts.js

Importante saber que essa estrutura de arquivos e diretório são usadas especificamente neste exemplo devido eu ter adaptado de  forma que fosse mais fácil compreender e trabalhar, de outra forma, a estrutura utilizada nos exemplos que vem no pacote do Fusioncharts é um pouquinho diferente mas nada de complicado fique tranquilo, você vai olhar e entender de cara.  ;)

Então voltando ao assunto principal, com essa estrutura de diretórios e seus respectivos arquivos precisamos apenas do arquivo PHP com as linhas abaixo.

<script language=”javascript” src=“charts/fusioncharts.js”></script>
<?php
 #incluindo o arquivo FC
 include(“includes/FusionCharts.php“);
 #metodo que renderiza o grafico na tela
 echo renderChart(“charts/FCF_Column3D.swf“, “data/dados.xml“, “”, “graf“, 600, 300);
?>

Acredite se quiser, com essa linha javascript e mais as 2 linhas PHP nós geramos o gráfico da imagem acima!

Como não há praticamente nada no arquivo PHP irei explicar apenas a linha que nos importa, a última linha.

 echo renderChart(“charts/FCF_Column3D.swf“, “data/dados.xml“, “”, “graf“, 600, 300);

Após incluirmos o arquivo FusionCharts na primeira linha do PHP nós chamamos a função renderChart que recebe alguns parâmetros e são eles na ordem:

1 parâmetro – caminho para o arquivo flash que irá gerar o gráfico.
2 parâmetro – caminho do arquivo XML que contém os dados que queremos exibir.
3 parâmetro – vazio, seria utilizado se ao invés de um arquivo estivessemos passando  uma variável, neste caso o parâmetro vazio seria o segundo que contém o caminho do arquivo.
4 parâmetro - nome do gráfico, dê o nome que quiser.
5 e 6 parâmetros – respectivamente largura e altura do gráfico na tela, altere como quiser.

Simples não?

Segundo exemplo
- Usando/concatenando uma váriavel PHP para gerar o XML

<script language=”javascript” src=“charts/fusioncharts.js”></script>
<?php
$strXML = “<graph xAxisName=’Meses’ yAxisName=’Acessos’>“;
$strXML .= “<set name=’Jan’ value=’462′ color=’AFD8F8′ />“;
$strXML .= “<set name=’Fev’ value=’857′ color=’F6BD0F’ />“;
$strXML .= “<set name=’Mar’ value=’671′ color=’8BBA00′ />“;
$strXML .= “<set name=’Abr’ value=’494′ color=’FF8E46′/>“;
$strXML .= “<set name=’Mai’ value=’761′ color=’008E8E’/>“;
$strXML .= “<set name=’Jun’ value=’960′ color=’D64646′/>“;
$strXML .= “<set name=’Jul’ value=’629′ color=’8E468E’/>“;
$strXML .= “<set name=’Ago’ value=’622′ color=’588526′/>“;
$strXML .= “<set name=’Set’ value=’376′ color=’B3AA00′/>“;
$strXML .= “<set name=’Out’ value=’494′ color=’008ED6′/>“;
$strXML .= “<set name=’Nov’ value=’761′ color=’9D080D’/>“;
$strXML .= “<set name=’Dez’ value=’960′ color=’A186BE’/>“;
$strXML .=  “</graph>“;
include(“includes/FusionCharts.php“);
echo renderChart(“charts/FCF_Line.swf“, “”, $strXML, “chart1“, 600, 300);
?>

Notem que as mudanças são:

- Ao invés de utilizarmos um arquivo XML, nós criamos e concatenamos a variável strXML com os valores requeridos no arquivo XML, como podem ver a estrutura do XML não muda, temos o atributo name que se refere à coluna o value que corresponde à altura da barra no gráfico e color que possui a cor em hexadecimal da barra.

- Já na função renderChart, o  segundo parâmetro está vazio e o terceiro possui a variável strXML assim como comentei mais acima, relembrando…

O segundo parâmetro é vazio quando passamos à função renderChart uma váriável php e o terceiro parâmetro é vazio quando passamos um arquivo XML.

Notem também que o nome do arquivo flash informado no primeiro parâmetro mudou, isso pq o FC dispoem de diversos tipos de gráficos que utilizam a mesma estrutura XML, deem uma vasculhada nos exemplos contidos na documentação do FC para ver os tipos de gráficos disponíveis. O arquivo flash utilizado neste exemplo irá gerar exatamente o gráfico abaixo:

clique para ampliar

clique para ampliar

Quando os gráficos que são gerados eles são animados, daí o flash. O FC É perfeito e estamos falando apenas das funções básicas da versão free, se quiserem se impressionar ainda mais olhem a versão comercial do FC, é de brilhar os olhos! ;)

Links:

FusionCharts vs. free:  http://www.fusioncharts.com/free/Download.asp?gMenuItemId=5

Nosso exemplo em ação e mais tipos de gráficos com o mesmo XML:  Exemplo

Tá legal, foi fácil entender o exemplo mas vocês terão que estruturar os diretórios como mostrei para que esses códigos do exemplo possam funcionar, a dica que dou é …

Baixe o FC e explore sua estrutura de arquivos. Verá que você não precisa fazer exatamente como eu fiz, teste os exemplos contidos no pacote mesmo. Se quiser a que eu modifiquei apenas para testes do exemplo acima, deixe um comentário aí que te mando por email, não quero colocar o link aqui! Mas não deixe de baixar o pacote completo do FC.

Últimas considerações:

- Se pretende colocar seu exemplo em um servidor linux não esqueça que o Linux entende FusionCharts e fusioncharts como 2 diretórios diferentes, ou seja, digamos que ele é CaSe sEnSiTiVe.

- Não deixe de explorar os métodos utilizados pela classe PHP, nesse exemplo não trabalhamos com a classe em si e seus métodos como no exemplo do PHPlot !

- Depois me arrisco em um post para mostrar um exemplo utilizando BD. 

Abraços e até mais,

Rafael Clares



Gerar XML com PHP
Fevereiro 10, 2008, 1:16 am
Arquivado em: PHP, XML | Tags: ,

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”);

#criando e setanto o nomes e atributos dos elementos xml (nós)
$nome = $dom->createElement(“nome”, “Rafael Clares”);
$telefone = $dom->createElement(“telefone”, “(0xx11) 5500-0055″);
$endereco = $dom->createElement(“endereco”, “Av. longa n 1″);

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

#adiciona o nó contato no  nó superior (root) agenda
$root->appendChild($contato);
$dom->appendChild($root);
$dom->save(“contatos.xml”); #salvando o arquivo xml
header(“Content-Type: text/xml”); #cabeçalho da página
echo $dom->saveXML(); # imprime o xml na tela
?>

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, $telefone, $endereco) {
$contato = $document->createElement(“contato”); #criar contato
$nomeElm = $document->createElement(“nome”, $nome); #criar nome
$telefoneElm = $document->createElement(“telefone”, $telefone); #telefone
$enderecoElm = $document->createElement(“endereco”, $endereco); #endereco

$contato->appendChild($nomeElm);
$contato->appendChild($telefoneElm);
$contato->appendChild($enderecoElm);

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
$contatoPaulo = addContato($dom, “Paulo J.”, “(11) 5555-4444″, “Av. Principal, 80″);
$contatoJoao = addContato($dom, “Joao S.”, “(11) 4444-5555″, “R. da Feira, 70″);

#adicionando no root
$root->appendChild($contatoPaulo);
$root->appendChild($contatoJoao);

$dom->appendChild($root);
$dom->save(“agenda.xml”); #salvando o arquivo

header(“Content-Type: text/xml”);
echo $dom->saveXML(); #mostrar dados na tela
?>

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

Até a próxima,

Rafael Clares