Tutorial PHP XML: Criar, analisar, ler com exemplo
⚡ Resumo Inteligente
PHP e XML trabalham juntos para estruturar, armazenar e trocar dados entre sistemas. Este guia explica XML, o DOM e os analisadores XML, mostra como ler um documento XML com SimpleXML e como criar um com a classe DOMDocument, e termina com a indicação de quando usar cada um.

O que é XML?
XML é a sigla para Extensible Markup Language.
O XML é usado para estruturar, armazenar e transportar dados de um sistema para outro.
O XML é semelhante ao HTML. Ele usa tags de abertura e fechamento. Ao contrário do HTML, o XML permite que os usuários definam suas próprias tags.
O que é DOM?
DOM é a sigla para Document Object Model.
É um padrão multiplataforma e independente de idioma que define como acessar e manipular dados em:
- HTML
- XHTML
- XML
DOM XML é usado para acessar e manipular documentos XML. Isto visualiza o documento XML como uma estrutura de árvore.
Analisadores de XML
Um analisador XML é um programa que traduz um documento XML em um objeto do Modelo de Objeto de Documento XML (DOM).
O objeto DOM XML pode então ser manipulado usando JavaRoteiro, Python, PHP e outras linguagens.
A palavra-chave CDATA, que é a sigla para (unparsed) Character Data (Dados de Caracteres Não Analisados), é usada para ignorar caracteres especiais como “<” e “>” ao analisar um documento XML.
Por que usar XML?
- Serviços web como SOAP e REST usam o formato XML para trocar informações. Aprender o que é XML e como ele funciona oferece uma vantagem competitiva como desenvolvedor, já que as aplicações modernas fazem uso extensivo de serviços web.
- Os documentos XML podem ser usados para armazenar as configurações de um aplicativo.
- Permite criar suas próprias tags personalizadas, o que torna o sistema mais flexível.
Exemplo de documento XML
Vamos supor que você esteja desenvolvendoping Uma aplicação que obtém dados de um serviço web em formato XML.
Abaixo segue um exemplo de como o documento XML se parece.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
AQUI,
- “ " especifica a versão XML e a codificação a serem usadas
- “ ”é o elemento raiz.
- “ … São os elementos filhos, um para cada registro de funcionário.
Como ler XML usando PHP
Vamos agora escrever o código que lerá o documento XML dos funcionários e exibirá os resultados em um navegador da web. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
AQUI,
- O código “$xml = simplexml_load_file('employees.xml');” utiliza a função simplexml_load_file para carregar o arquivo chamado employees.xml e atribuir o conteúdo à variável $xml.
- “$list = $xml->record;” obtém o conteúdo dos nós de registro.
- “for ($i = 0; $i < count(…)…” é o laço for que lê o array e exibe os resultados.
- “$lista[$i]->atributos()->man_no;” lê o atributo man_no do elemento
- “$lista[$i]->nome;” lê o valor do elemento filho do nome
- “$lista[$i]->posição;” lê o valor do elemento filho position
Testando o leitor XML
Supondo que você tenha salvo o arquivo index.php na pasta phptuts/xml, navegue até o URL http://localhost/phptuts/xml/index.php
Como criar um documento XML usando PHP
Veremos agora como criar um documento XML usando PHP.
O código a seguir utiliza a classe DOMDocument do PHP para criar um documento XML.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
AQUI,
- “$dom = new DOMDocument();” cria uma instância da classe DOMDocument.
- “$dom->encoding = 'utf-8';” define a codificação do documento para utf-8
- “$dom->xmlVersion = '1.0';” especifica o número da versão 1.0
- “$dom->formatOutput = true;” garante que a saída esteja bem formatada
- “$root = $dom->createElement('Movies');” cria o nó raiz chamado Filmes
- “$attr_movie_id = new DOMAttr('movie_id', '5467');” define o atributo movie_id do nó do filme.
- “$dom->createElement('ElementName', 'ElementValue')” cria um nó filho. ElementName especifica o nome do elemento, por exemplo, Título. ElementValue define o valor do nó filho, por exemplo, A Campanha.
- “$root->appendChild($movie_node);” anexa o nó do filme ao nó raiz Filmes
- “$dom->appendChild($root);” anexa o nó raiz ao documento XML.
- “$dom->save($xml_file_name);” salva o arquivo XML no diretório raiz do servidor web.
- O comando “echo “$xml_file_name foi criado com sucesso”;” exibe uma mensagem de sucesso.
Testando o XML Creator
Supondo que você tenha salvo o arquivo create_movies_list.php na pasta phptuts/xml, navegue até o URL http://localhost/phptuts/xml/create_movies_list.php
Abra o arquivo movies_list.xml.
SimpleXML vs DOMDocument
O PHP oferece duas maneiras principais de trabalhar com XML. O SimpleXML é mais indicado quando você precisa principalmente ler dados, enquanto o DOMDocument oferece um controle mais preciso para construir e editar documentos de forma complexa. A tabela abaixo compara as duas opções.
| Aspecto | SimpleXML | Documento DOMD |
|---|---|---|
| FÁCIL DE USAR | Muito simples; o documento se comporta como objetos aninhados. | API mais detalhada, baseada em nós. |
| Melhor para | Leitura e edição leve | Criação de documentos e manipulação complexa |
| Estilo de acesso | $xml->registro->nome | criarElemento() e adicionarFilho() |
| Suporte XPath | Sim, via ->xpath() | Sim, através da classe DOMXPath. |
Uma regra prática é usar primeiro o SimpleXML para ler feeds e arquivos simples, e mudar para o DOMDocument quando precisar criar documentos, inserir nós em posições específicas ou validar em relação a um esquema.



