DOM XML do PHP

O analisador DOM integrado torna possível manipular documentos XML no PHP.

O que é DOM?

O W3C DOM fornece um conjunto de objetos padrão para documentos HTML e XML, bem como interfaces padrão para acessar e operar esses documentos.

O W3C DOM é dividido em diferentes partes (Core, XML e HTML) e diferentes níveis (DOM Level 1/2/3):

  • Core DOM - Define um conjunto de objetos padrão para qualquer documento estruturado
  • XML DOM - Define um conjunto de objetos padrão para documentos XML
  • HTML DOM - Define um conjunto de objetos padrão para documentos HTML

Se você quiser aprender mais sobre XML DOM, acesse nosso Tutorial XML DOM.

Análise XML

Para ler e atualizar - criar, manipular e processar um documento XML, você precisa de um analisador XML.

Existem dois tipos básicos de analisadores XML:

  • Analisador baseado em árvore:Este analisador converte o documento XML em uma estrutura em forma de árvore. Ele analisa todo o documento e fornece uma API para acessar os elementos da árvore, como o Document Object Model (DOM).
  • Analisador baseado em eventos:Vê o documento XML como uma série de eventos. Quando um evento específico ocorre, o analisador chama uma função para lidar com ele.

O analisador DOM é um analisador baseado em árvore.

Veja a seguir um fragmento de documento XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>John</from>

O DOM XML vê o XML como uma estrutura em forma de árvore:

  • Nível 1: Documento XML
  • Nível 2: Elemento raiz: <from>
  • Nível 3: Elemento de texto: "John"

Instalação

As funções do analisador DOM XML são parte integrante do PHP. Não é necessário instalar para usá-las.

Arquivo XML

Vamos usar o seguinte arquivo XML em nosso exemplo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Lembrete</heading>
<body>Não se esqueça da reunião!</body>
</note>

Carregar e exibir XML

Precisamos inicializar o analisador XML, carregar o XML e então exibi-lo:

Exemplo

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

A saída do código acima é:

George John Lembrete Não se esqueça da reunião!

Se você visualizar o código-fonte na janela do navegador, verá o seguinte HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Lembrete</heading>
<body>Não se esqueça da reunião!</body>
</note>

No exemplo acima, foi criado um objeto DOMDocument e o XML contido em "note.xml" foi carregado para esse objeto de documento.

A função saveXML() coloca o documento XML interno em uma string, assim podemos imprimi-lo.

Percorrer XML

Precisamos inicializar o analisador XML, carregar o XML e percorrer todos os elementos <note> de dentro:

Exemplo

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

A saída do código acima é:

#text = 
to = George
#text = 
from = John
#text = 
heading = Lembrete
#text = 
body = Não se esqueça da reunião!
#text =

No exemplo acima, você viu nós de texto vazios entre cada elemento.

Quando o XML é gerado, ele geralmente contém espaços em branco entre os nós. O analisador XML DOM os trata como elementos normais, e se você não prestar atenção neles, às vezes pode surgir problemas.

Se você quiser aprender mais sobre XML DOM, acesse nosso Tutorial XML DOM.