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: