Trabajo con XML en PHP: guía completa para analizar y crear documentos XML

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con XML en PHP: desde el análisis simple hasta la creación de documentos complejos



XML (eXtensible Markup Language) sigue siendo uno de los formatos clave para el intercambio de datos, archivos de configuración y servicios web (SOAP, RSS/Atom). PHP proporciona varias extensiones integradas potentes para trabajar con XML que permiten resolver prácticamente cualquier tarea, desde el análisis de feeds RSS simples hasta la generación de documentos complejos con espacios de nombres. En este artículo, analizaremos las herramientas principales: SimpleXML, DOMDocument y XMLReader, y también aprenderemos a crear documentos XML sobre la marcha.



1. SimpleXML — análisis rápido y conveniente



SimpleXML es la extensión más simple para trabajar con XML. Convierte un documento XML en un objeto cuyas propiedades se pueden leer como arrays y objetos normales. Es ideal para documentos pequeños y medianos cuando no se requiere una navegación compleja.



Cargar XML desde una cadena o archivo



<?php// Desde una cadena$xmlString = '<book><title>PHP para principiantes</title><author>Ivan Petrov</author></book>';$book = simplexml_load_string($xmlString);

// Desde un archivo$books = simplexml_load_file('books.xml');

echo $book->title; // PHP para principiantesecho $book->author; // Ivan Petrov?>


Trabajar con atributos y elementos múltiples



<?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 no admite consultas XPath complejas con condiciones (solo rutas simples). Para consultas más potentes, use DOMDocument o XPath.



2. DOMDocument — control total sobre XML



DOMDocument implementa la API DOM de W3C y brinda control total sobre la estructura del documento. Puede agregar, eliminar, modificar cualquier nodo, trabajar con espacios de nombres y ejecutar consultas XPath de cualquier complejidad. Es la opción para tareas profesionales.



Análisis y navegación con DOMDocument



<?php$dom = new DOMDocument();$dom->load('books.xml');

// Obtener todos los 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 "Libro: $title, Autor: $author<br>";}?>


XPath — consultas potentes a XML



<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);

// Encontrar todos los libros con precio > 500$expensiveBooks = $xpath->query('//book[price > 500]');

foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' rublos.<br>';}?>


3. Creación de documentos XML



PHP no solo permite leer, sino también crear documentos XML. Veamos ambos enfoques.



Creación de XML con SimpleXML



<?php$xml = new SimpleXMLElement('<catalog></catalog>');

$product = $xml->addChild('product');$product->addChild('name', 'Portátil');$product->addChild('price', 75000);$product->addAttribute('id', '12

Recommendations