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.



