Tutorial PHP XML: crear, analizar, leer con ejemplo
โก Resumen inteligente
PHP y XML trabajan juntos para estructurar, almacenar e intercambiar datos entre sistemas. Este tutorial explica XML, el DOM y los analizadores XML, luego muestra cรณmo leer un documento XML con SimpleXML y cรณmo crearlo con la clase DOMDocument, y finaliza con la explicaciรณn de cuรกndo usar cada uno.

ยฟQuรฉ es XML?
XML es el acrรณnimo de lenguaje de marcado extensible.
XML se utiliza para estructurar, almacenar y transportar datos de un sistema a otro.
XML es similar a HTML. Utiliza etiquetas de apertura y cierre. A diferencia de HTML, XML permite a los usuarios definir sus propias etiquetas.
ยฟQuรฉ es DOM?
DOM es el acrรณnimo de Document Object Model.
Es un estรกndar multiplataforma e independiente del idioma que define cรณmo acceder y manipular datos en:
- HTML
- XHTML
- XML
DOM XML se utiliza para acceder y manipular documentos XML. รl ve el documento XML como una estructura de รกrbol.
Analizadores XML
Un analizador XML es un programa que traduce un documento XML a un objeto del Modelo de Objetos de Documento XML (DOM).
El objeto XML DOM se puede manipular posteriormente utilizando JavaTexto, Python, PHP y otros lenguajes.
La palabra clave CDATA, que es el acrรณnimo de (unparsed) Character Data (Datos de caracteres sin analizar), se utiliza para ignorar caracteres especiales como โ<โ y โ>โ al analizar un documento XML.
ยฟPor quรฉ utilizar XML?
- Los servicios web como SOAP y REST utilizan el formato XML para intercambiar informaciรณn. Aprender quรฉ es XML y cรณmo funciona te brinda una ventaja competitiva como desarrollador, ya que las aplicaciones modernas hacen un uso intensivo de los servicios web.
- Los documentos XML se pueden utilizar para almacenar la configuraciรณn de una aplicaciรณn.
- Te permite crear tus propias etiquetas personalizadas, lo que lo hace mรกs flexible.
Ejemplo de documento XML
Supongamos que usted estรก desarrollandoping una aplicaciรณn que obtiene datos de un servicio web en formato XML.
A continuaciรณn se muestra un ejemplo de cรณmo se ve el documento XML.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
AQUร,
- โ โ especifica la versiรณn XML y la codificaciรณn que se utilizarรก
- โโ es el elemento raรญz.
- โ โฆ โ son los elementos secundarios, uno por cada registro de empleado.
Cรณmo leer XML usando PHP
Ahora vamos a escribir el cรณdigo que leerรก el documento XML de los empleados y mostrarรก los resultados en un navegador web. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
AQUร,
- โ$xml = simplexml_load_file('employees.xml');โ utiliza la funciรณn simplexml_load_file para cargar el archivo llamado employees.xml y asignar su contenido a la variable $xml.
- โ$list = $xml->record;โ obtiene el contenido de los nodos de registro.
- โfor ($i = 0; $i < count(โฆ)โฆโ es el bucle for que lee el array y muestra los resultados.
- โ$lista[$i]->atributos()->man_no;โ lee el atributo man_no del elemento
- โ$lista[$i]->nombre;โ lee el valor del elemento secundario nombre
- โ$lista[$i]->posiciรณn;โ lee el valor del elemento secundario de posiciรณn
Probando el lector XML
Suponiendo que guardรณ el archivo index.php en la carpeta phptuts/xml, navegue hasta el URL http://localhost/phptuts/xml/index.php
Cรณmo crear un documento XML usando PHP
Ahora veremos cรณmo crear un documento XML usando PHP.
El siguiente cรณdigo utiliza la clase integrada de PHP DOMDocument para crear un documento XML.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
AQUร,
- โ$dom = new DOMDocument();โ crea una instancia de la clase DOMDocument.
- "$dom->codificaciรณn = 'utf-8';" establece la codificaciรณn del documento en utf-8
- "$dom->xmlVersion = '1.0';" especifica el nรบmero de versiรณn 1.0
- โ$dom->formatoSalida = verdadero;โ garantiza que la salida estรฉ bien formateada
- โ$root = $dom->createElement('Pelรญculas');" crea el nodo raรญz llamado Pelรญculas
- โ$attr_movie_id = new DOMAttr('movie_id', '5467');โ define el atributo movie_id del nodo de pelรญcula.
- โ$dom->createElement('ElementName', 'ElementValue')โ crea un nodo hijo. ElementName especifica el nombre del elemento, por ejemplo, Tรญtulo. ElementValue establece el valor del nodo hijo, por ejemplo, La Campaรฑa.
- โ$root->appendChild($movie_node);โ agrega el nodo de pelรญcula al nodo raรญz Movies.
- โ$dom->appendChild($raรญz);โ agrega el nodo raรญz al documento XML.
- โ$dom->guardar($xml_file_name);โ guarda el archivo XML en el directorio raรญz del servidor web.
- โecho โ$xml_file_name se ha creado correctamenteโ;โ muestra un mensaje de รฉxito.
Probando el XML Creator
Suponiendo que guardรณ el archivo create_movies_list.php en la carpeta phptuts/xml, navegue hasta el URL http://localhost/phptuts/xml/create_movies_list.php
Abra el archivo movies_list.xml.
SimpleXML vs DOMDocument
PHP ofrece dos mรฉtodos principales para trabajar con XML. SimpleXML es ideal cuando se necesita principalmente leer datos, mientras que DOMDocument proporciona un control mรกs preciso para la creaciรณn y ediciรณn exhaustiva de documentos. La siguiente tabla compara ambos mรฉtodos.
| Aspecto | SimpleXML | DOMDocumento |
|---|---|---|
| Facilidad de uso | Muy sencillo; el documento se comporta como objetos anidados. | API mรกs detallada basada en nodos |
| Mejores para | Lectura y ediciรณn ligera | Creaciรณn de documentos y manipulaciรณn compleja |
| Estilo de acceso | $xml->registro->nombre | createElement() y appendChild() |
| Soporte XPath | Sรญ, a travรฉs de ->xpath() | Sรญ, a travรฉs de la clase DOMXPath. |
Una regla prรกctica es recurrir primero a SimpleXML para leer feeds y archivos simples, y cambiar a DOMDocument cuando necesite crear documentos, insertar nodos en posiciones especรญficas o validar segรบn un esquema.



