Trabalho com XML em PHP: Guia completo para desenvolvedores
XML (eXtensible Markup Language) continua sendo um dos principais formatos para troca de dados, configuração de aplicações e integração com serviços externos. O PHP oferece várias ferramentas poderosas para trabalhar com XML, cada uma adequada para diferentes cenários. Neste artigo, abordaremos detalhadamente as principais bibliotecas e abordagens usadas no desenvolvimento PHP moderno.
Principais ferramentas do PHP para trabalhar com XML
No PHP, existem três extensões principais para trabalhar com XML, cada uma com suas características e áreas de aplicação:
- SimpleXML — um parser simples e intuitivo para leitura de XML. Ideal para arquivos pequenos e processamento rápido.
- DOMDocument — uma implementação completa do W3C DOM para trabalhar com documentos XML. Suporta leitura, escrita, modificação e validação.
- XMLReader / XMLWriter — parsers de fluxo para trabalhar com grandes arquivos XML (centenas de megabytes e gigabytes).
1. SimpleXML — início rápido
SimpleXML permite converter uma string ou arquivo XML em um objeto que pode ser manipulado como um array ou objeto comum. É a escolha mais popular para tarefas simples.
<?php// Leitura de XML a partir de uma string$xmlString = '<books> <book id="1"> <title>PHP para iniciantes</title> <author>Ivan Petrov</author> <price currency="RUB">1500</price> </book> <book id="2"> <title>XML em detalhes</title> <author>Anna Smirnova</author> <price currency="RUB">2000</price> </book></books>';
$xml = simplexml_load_string($xmlString);
// Acesso aos dadosforeach ($xml->book as $book) { echo "ID: " . $book['id'] . ""; echo "Título: " . $book->title . ""; echo "Autor: " . $book->author . ""; echo "Preço: " . $book->price . " " . $book->price['currency'] . "
";}
// Criação de novo XML$newXml = new SimpleXMLElement('<catalog/>');$product = $newXml->addChild('product');$product->addAttribute('sku', 'P001');$product->addChild('name', 'Notebook');$product->addChild('price', 55000);
echo $newXml->asXML();?>2. DOMDocument — controle total
DOMDocument fornece acesso completo ao Document Object Model. Você pode criar, modificar e excluir qualquer nó, além de executar consultas XPath para buscar dados.
<?php$dom = new DOMDocument('1.0', 'UTF-8');$dom->formatOutput = true;
// Criação do elemento raiz$root = $dom->createElement('employees');$dom->appendChild($root);
// Adicionando um funcionário$employee = $dom->createElement('employee');$employee->setAttribute('id', '101');
$name = $dom->createElement('name', 'Alexei Kuznetsov');$employee->appendChild($name);
$position = $dom->createElement('position', 'Desenvolvedor');$employee->appendChild($position);
$root->appendChild($employee);
// Consulta XPath$xpath = new DOMXPath($dom);$query = "//employee[@id='101']/name";$result = $xpath->query($query);
if ($result->length > 0) { echo "Encontrado: " . $result->item(0)->nodeValue;}
// Salvando em arquivo$dom->save('employees.xml');?>3. XMLReader e XMLWriter — para grandes volumes de dados
Quando os arquivos XML se tornam grandes demais para carregar na memória (mais de 10-50 MB), os parsers de fluxo entram em ação. O XMLReader lê o documento nó por nó, enquanto o XMLWriter cria XML em partes.
<?php// Leitura de um grande arquivo XML$reader = new XMLReader();$reader->open('large_data.xml');
while ($reader->read(