Você está na página 1de 4

________________________________________________________________________________________

Administração Central
Cetec Capacitações

3. Criando XML com DOM ( + banco de dados)

Vamos gerar o documento XML usando a API DOM do PHP.

DOM(Document Object Model)i é uma interface de programação, baseada no modelo de objetos,


que permite a manipulação e transformação de documentos em XML. A interface DOM manipula
documentos XML na forma de uma estrutura em árvore. Quando um documento é carregado na
memória do computador, suas estruturas podem ser lidas e manipuladas através do objeto DOM.

O modelo implementado pela interface DOM é a forma mais flexível para manipulação do
conteúdo de um documento XML. Este modelo não é limitado pela ordem em que as estruturas do
documento são processadas, logo é possível navegar pelo documento em qualquer ordem.
Contudo, como utilização do objeto DOM requer a leitura de toda estrutura XML em uma árvore
na memória, pode acontecer um alto consumo de recursos da máquina.

Primeiro devemos criar a instância do objeto.

$dom = new DOMDocument();

Procure não deixar linhas em brancos, espaços ou caracteres especiais antes da inicialização do
objeto, sugestão: coloque-o na primeira linha do seu código.

$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

$dom->preserveWhiteSpace = false;
• Indica que o documento não deverá conter espeço em branco.

$dom->formatOutput = true;
• Indica ao objetivo que a saída deverá ser formatada.

$array = $dom->createElement("array");
$root = $dom->createElement("telefone");
$contato = $dom->createElement("contato");

________________________________________________________________________________________
www.centropaulasouza.sp.gov.br
Rua dos Andradas, 140 • Santa Ifigênia • 01208-000 • São Paulo • SP • Tel.: (11) 3324.3300
________________________________________________________________________________________

Administração Central
Cetec Capacitações

O método createElement(), cria a estrutura de nós iniciais do documento XML. Nessa caso estão
sendo criados os nós <array>,<telefone> e <contato>.

Agora devemos carregas os nós que contém os dados.

$apelido = $dom->createElement("apelido", "daterra");


$nome = $dom->createElement("nome", utf8_encode("Agrícola Beterraba Areia Leão"));
$foneddd = $dom->createElement("foneddd", "021-9874-563");

O método createElement(), desta vez é utilizando com um segundo parâmetro que indica qual o
conteúdo do nó criado.

$apelido = $dom->createElement("apelido", "daterra");

Onde: $apelido, representa um nó com o conteúdo "daterra".

Agora a parte que devemos tomar muito cuidado, pois refere-se ao relacionamento correto dos
nós da estrutura de árvore para que o documento XML fique devidamente organizado.

$contato->appendChild($apelido);
$contato->appendChild($nome);
$contato->appendChild($foneddd);

O método appendChild() adiciona um nó ao outro, desta forma, os nós de conteúdo <apelido>,


<nome> e <foneddd>, são adicionados ao nó <contato>.

Na sequência o nó <contato> é adicionado ao nó <root>, o nó <root> é adicionado ao nó <array>


e fechando a estrutura o nó <array> é adicionado ao nó <dom>.

$root->appendChild($contato);
$array->appendChild($root);
$dom->appendChild($array);

________________________________________________________________________________________
www.centropaulasouza.sp.gov.br
Rua dos Andradas, 140 • Santa Ifigênia • 01208-000 • São Paulo • SP • Tel.: (11) 3324.3300
________________________________________________________________________________________

Administração Central
Cetec Capacitações

E para encerrar, grava o documento XML.

$dom->save("contatos.xml");

Um outro recurso, no final do documento além de gravar o documento, o mesmo também será
aberto no navegador.

header("Content-Type: text/xml");
print $dom->saveXML();

Analisando o código completo, teremos:

$dom = new DOMDocument();


$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$array = $dom->createElement("array");
$root = $dom->createElement("telefone");
$contato = $dom->createElement("contato");
$apelido = $dom->createElement("apelido", "daterra");
$nome = $dom->createElement("nome", utf8_encode("Agrícola Beterraba Areia Leão"));
$foneddd = $dom->createElement("foneddd", "021-9874-563");
$contato->appendChild($apelido);
$contato->appendChild($nome);
$contato->appendChild($foneddd);
$root->appendChild($contato);
$array->appendChild($root);
$dom->appendChild($array);
$dom->save("contatos.xml");

header("Content-Type: text/xml");
print $dom->saveXML();

Documento: exemplo03.php

________________________________________________________________________________________
www.centropaulasouza.sp.gov.br
Rua dos Andradas, 140 • Santa Ifigênia • 01208-000 • São Paulo • SP • Tel.: (11) 3324.3300
________________________________________________________________________________________

Administração Central
Cetec Capacitações

Realize a leitura do documento.

$link = "contatos.xml";
$xml = simplexml_load_file($link) -> telefone;
foreach($xml -> contato as $contato){
echo "<strong>Apelido:</strong> ".utf8_decode($contato -> apelido)."<br />";
echo "<strong>Nome Completo:</strong> ".utf8_decode($contato -> nome)."<br />";
echo "<strong>(ddd) Telefone:</strong> ".utf8_decode($contato -> foneddd)."<br />";
echo "<br />";
}

Documento: lendoxml_exemplo03.php

Agora usando a tabela para carregar os nós no objeto DOM. Não podemos esquecer que o nó
<contato> dever ser criado de acordo com cada registro da tabela e adicionado ao nó principal
<root> . Tudo isso deverá ser feito dentro da estrutura do while().

while($dados=mysqli_fetch_array($info)) {
$contato = $dom->createElement("contato");

$apelido = $dom->createElement("apelido", $dados['apelido']);


$nome = $dom->createElement("nome", utf8_encode($dados['nome']));
$foneddd = $dom->createElement("foneddd", $dados['foneddd']);
$contato->appendChild($apelido);
$contato->appendChild($nome);
$contato->appendChild($foneddd);

$root->appendChild($contato);
}

Documento: exemplo04.php

Use o documento lendoxml_exemplo04.php, para fazer a leitura do documento XML.

i
https://loiane.com/2009/04/manipulando-arquivos-xml-em-java-com-a-api-dom-parte-i/

________________________________________________________________________________________
www.centropaulasouza.sp.gov.br
Rua dos Andradas, 140 • Santa Ifigênia • 01208-000 • São Paulo • SP • Tel.: (11) 3324.3300

Você também pode gostar