Trabajo con XML en PHP: análisis, creación y procesamiento de datos

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: Guía completa para desarrolladores



XML (eXtensible Markup Language) sigue siendo uno de los formatos clave para el intercambio de datos, la configuración de aplicaciones y la integración con servicios externos. PHP proporciona varias herramientas potentes para trabajar con XML, cada una adecuada para diferentes escenarios. En este artículo, analizaremos en detalle las principales bibliotecas y enfoques utilizados en el desarrollo moderno con PHP.



Herramientas principales de PHP para trabajar con XML



En PHP existen tres extensiones principales para trabajar con XML, cada una con sus propias características y áreas de aplicación:



  • SimpleXML — un analizador simple e intuitivo para leer XML. Ideal para archivos pequeños y procesamiento rápido.
  • DOMDocument — una implementación completa de W3C DOM para trabajar con documentos XML. Soporta lectura, escritura, modificación y validación.
  • XMLReader / XMLWriter — analizadores de flujo para trabajar con archivos XML grandes (cientos de megabytes y gigabytes).


1. SimpleXML — inicio rápido



SimpleXML permite convertir una cadena XML o un archivo en un objeto con el que se puede trabajar como si fuera un array o un objeto normal. Es la opción más popular para tareas simples.



<?php// Lectura de XML desde una cadena$xmlString = '<books>    <book id="1">        <title>PHP para principiantes</title>        <author>Ivan Petrov</author>        <price currency="RUB">1500</price>    </book>    <book id="2">        <title>XML en detalle</title>        <author>Anna Smirnova</author>        <price currency="RUB">2000</price>    </book></books>';

$xml = simplexml_load_string($xmlString);

// Acceso a los datosforeach ($xml->book as $book) { echo "ID: " . $book['id'] . ""; echo "Título: " . $book->title . ""; echo "Autor: " . $book->author . ""; echo "Precio: " . $book->price . " " . $book->price['currency'] . "

";}

// Creación de nuevo XML$newXml = new SimpleXMLElement('<catalog/>');$product = $newXml->addChild('product');$product->addAttribute('sku', 'P001');$product->addChild('name', 'Portátil');$product->addChild('price', 55000);

echo $newXml->asXML();?>


2. DOMDocument — control total



DOMDocument proporciona acceso completo al Modelo de Objetos del Documento. Puede crear, modificar y eliminar cualquier nodo, así como realizar consultas XPath para buscar datos.



<?php$dom = new DOMDocument('1.0', 'UTF-8');$dom->formatOutput = true;

// Creación del elemento raíz$root = $dom->createElement('employees');$dom->appendChild($root);

// Agregar un empleado$employee = $dom->createElement('employee');$employee->setAttribute('id', '101');

$name = $dom->createElement('name', 'Alexei Kuznetsov');$employee->appendChild($name);

$position = $dom->createElement('position', 'Desarrollador');$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;}

// Guardar en archivo$dom->save('employees.xml');?>


3. XMLReader y XMLWriter — para grandes volúmenes de datos



Cuando los archivos XML son demasiado grandes para cargarlos en memoria (más de 10-50 MB), los analizadores de flujo vienen al rescate. XMLReader lee el documento nodo por nodo, mientras que XMLWriter crea XML por partes.



<?php// Lectura de un archivo XML grande$reader = new XMLReader();$reader->open('large_data.xml');

while ($reader->read(

Recommendations