Trabalho com XML em PHP: DOMDocument, SimpleXML e XPath
XML (eXtensible Markup Language) continua sendo um dos principais formatos para troca de dados, armazenamento de configurações e integração com serviços externos (feeds RSS, SOAP, API). O PHP oferece várias extensões nativas poderosas para trabalhar com XML. Neste artigo, abordaremos três abordagens principais: DOMDocument (modelo de objeto de documento), SimpleXML (simples e intuitivo) e XPath (linguagem de consulta para navegação).
1. Preparação: exemplo de documento XML
Para todos os exemplos, usaremos o mesmo arquivo XML catalog.xml:
<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="1"> <title>PHP para iniciantes</title> <author>Ivan Petrov</author> <price currency="RUB">1200</price> </book> <book id="2"> <title>XML em detalhes</title> <author>Maria Sidorova</author> <price currency="RUB">950</price> </book></catalog>2. DOMDocument — controle total sobre XML
A extensão DOMDocument implementa o W3C DOM Level 2. Ela oferece o máximo controle: é possível criar, excluir, modificar quaisquer nós, atributos e conteúdo de texto. Adequada para cenários complexos onde é necessário um gerenciamento preciso da estrutura.
Carregamento e leitura de XML
<?php$dom = new DOMDocument();$dom->load('catalog.xml'); // ou loadXML($xmlString)
$books = $dom->getElementsByTagName('book');foreach ($books as $book) { $id = $book->getAttribute('id'); $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; $price = $book->getElementsByTagName('price')->item(0)->nodeValue; echo "Livro #$id: $title — $author, $price RUB";}?>Criação de novo XML
<?php$dom = new DOMDocument('1.0', 'UTF-8');$root = $dom->createElement('catalog');$dom->appendChild($root);
$book = $dom->createElement('book');$book->setAttribute('id', '3');$title = $dom->createElement('title', 'PHP e XML');$book->appendChild($title);$root->appendChild($book);
echo $dom->saveXML(); // exibirá a string XML// $dom->save('new_catalog.xml');?>3. SimpleXML — simplicidade e praticidade
SimpleXML é uma extensão mais leve que converte XML em um objeto com acesso aos elementos por meio de propriedades. Ideal para leitura rápida, especialmente quando a estrutura XML é conhecida e não requer ajustes finos.
Leitura de XML com SimpleXML
<?php$xml = simplexml_load_file('catalog.xml'); // ou simplexml_load_string($xmlString)
foreach ($xml->book as $book) { $id = (string)$book['id']; $title = (string)$book->title; $author = (string)$book->author; $price = (string)$book->price; echo "Livro #$id: $title — $author, $price RUB";}?>Criação de XML via SimpleXML
<?php$xml = new SimpleXMLElement('<catalog></catalog>');$book = $xml->addChild('book');$book->addAttribute('id', '4');$book->addChild('title', 'SimpleXML Guide');$book->addChild('price', 800)->addAttribute('currency', 'RUB');
echo $xml->asXML();// $xml->asXML('output.xml');?>Modificação de dados
<?php$xml = simplexml_load_file('catalog.xml');$xml->book[0]->price = 1300; // altera o preço do primeiro livro$xml->asXML('catalog_updated.xml');?>4. XPath — busca flexível no documento
Também na biblioteca
Guia completo do Flurl para C# (.NET) com exemplos práticos
ORM para Java: comparação de Hibernate, MyBatis e JPA com exemplos
Jetpack Compose para Kotlin: guia completo com exemplos
BenchmarkDotNet para C# (.NET): guia completo com exemplos
Trabalhando com YAML em Kotlin: bibliotecas, exemplos e parsing