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 un lenguaje de marcado extensible, un formato basado en etiquetas que permite definir etiquetas personalizadas para estructurar y transportar datos.
  • ???? El DOM: El modelo de objetos de documento (DOM) considera un documento XML o HTML como un árbol, de modo que el código puede navegar y editar los nodos.
  • 🔄 Analizadores XML: Un analizador convierte un documento XML en un objeto DOM que PHP, JavaGuión, o Python puede leer y cambiar.
  • Línea Lectura de XML: simplexml_load_file carga un archivo en objetos, de modo que se accede a los registros con una sintaxis de flecha como $xml->registro->nombre.
  • 🛠️ Creación de XML: La clase DOMDocument construye un documento nodo por nodo con createElement y appendChild, y luego guarda el archivo.
  • 🇧🇷 SimpleXML frente a DOM: SimpleXML es rápido de leer, mientras que DOMDocument es adecuado para la creación precisa y la manipulación compleja.
  • 🤖 Asistencia de IA: Las herramientas de IA pueden generar código de análisis para una estructura XML específica y convertir entre XML, JSON y matrices PHP.

PHP y XML

¿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

Leer XML usando 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

Crear un documento XML usando PHP

Abra el archivo movies_list.xml.

Crear un documento XML usando PHP

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.

Preguntas Frecuentes

Ambos almacenan datos estructurados, pero XML utiliza etiquetas y admite atributos, comentarios y esquemas, mientras que JSON es más ligero y se asigna directamente a matrices y objetos. JSON es común para las API; XML es más adecuado para documentos y configuración.

Cargue el archivo con SimpleXML o DOMDocument, modifique los valores o atributos de los nodos y, a continuación, guárdelo. Con SimpleXML, edite la propiedad y llame a asXML('file.xml'); con DOMDocument, edite el nodo y llame a save().

XPath es un lenguaje de consulta para seleccionar nodos en un documento XML. En PHP, llame a $xml->xpath('//record/name') con SimpleXML, o use la clase DOMXPath, para obtener elementos coincidentes sin buscar.ping a través de todo el árbol.

Sí. La IA puede generar código usando simplexml_load_string, json_encode y json_decode para convertir entre formatos, e identificar datos que no se asignan correctamente, como atributos XML o contenido mixto. Verifique el resultado.

Sí. Pega un ejemplo de tu XML y la IA generará código SimpleXML o DOMDocument que leerá los elementos y atributos exactos que necesitas, incluyendo bucles para registros repetidos. Pruébalo con archivos reales.

Resumir este post con: