Trabalho com XML em PHP: da análise simples à criação de documentos complexos
XML (eXtensible Markup Language) continua sendo um dos principais formatos para troca de dados, arquivos de configuração e serviços web (SOAP, RSS/Atom). O PHP oferece várias extensões integradas poderosas para trabalhar com XML, que permitem resolver praticamente qualquer tarefa — desde a análise de feeds RSS simples até a geração de documentos complexos com namespaces. Neste artigo, abordaremos as principais ferramentas: SimpleXML, DOMDocument e XMLReader, além de aprender a criar documentos XML dinamicamente.
1. SimpleXML — análise rápida e conveniente
SimpleXML é a extensão mais simples para trabalhar com XML. Ela converte um documento XML em um objeto, cujas propriedades podem ser lidas como arrays e objetos comuns. Ideal para documentos pequenos e médios, quando não é necessária uma navegação complexa.
Carregar XML de uma string ou arquivo
<?php// De uma string$xmlString = '<book><title>PHP para iniciantes</title><author>Ivan Petrov</author></book>';$book = simplexml_load_string($xmlString);
// De um arquivo$books = simplexml_load_file('books.xml');
echo $book->title; // PHP para iniciantesecho $book->author; // Ivan Petrov?>Trabalhando com atributos e elementos múltiplos
<?php$xml = '<library> <book id="1"> <title>PHP Objects</title> <author>Matt Zandstra</author> </book> <book id="2"> <title>Clean Code</title> <author>Robert C. Martin</author> </book></library>';
$library = simplexml_load_string($xml);
foreach ($library->book as $book) { echo 'ID: ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';}// ID: 1 — PHP Objects (Matt Zandstra)// ID: 2 — Clean Code (Robert C. Martin)?>Importante: SimpleXML não suporta consultas XPath complexas com condições (apenas caminhos simples). Para consultas mais poderosas, use DOMDocument ou XPath.
2. DOMDocument — controle total sobre XML
DOMDocument implementa a API DOM do W3C e oferece controle total sobre a estrutura do documento. Você pode adicionar, remover, modificar qualquer nó, trabalhar com namespaces e executar consultas XPath de qualquer complexidade. É a escolha para tarefas profissionais.
Análise e navegação com DOMDocument
<?php$dom = new DOMDocument();$dom->load('books.xml');
// Obter todos os elementos <book>$books = $dom->getElementsByTagName('book');
foreach ($books as $book) { $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; echo "Livro: $title, Autor: $author<br>";}?>XPath — consultas poderosas para XML
<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);
// Encontrar todos os livros com preço > 500$expensiveBooks = $xpath->query('//book[price > 500]');
foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' R$<br>';}?>3. Criação de documentos XML
O PHP permite não apenas ler, mas também criar documentos XML. Vamos analisar ambas as abordagens.
Criação de XML com SimpleXML
<?php$xml = new SimpleXMLElement('<catalog></catalog>');
$product = $xml->addChild('product');$product->addChild('name', 'Notebook');$product->addChild('price', 75000);$product->addAttribute('id', '12 Também na biblioteca
Event Bus e padrão Observer em Swift: implementação e exemplos
Trabalhando com Excel em JavaScript (Node.js): bibliotecas e exemplos de código
Internacionalização (i18n) em Go (Golang): Guia Completo
Alamofire para Swift: guia completo com exemplos
Trabalhando com CSV em Swift (iOS/macOS): bibliotecas e exemplos