Trabalho com XML em PHP: DOMDocument, SimpleXML e XPath

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations