SimpleXML en PHP

SimpleXML maneja las tareas XML más comunes, dejando el resto de tareas a otras extensiones.

¿Qué es SimpleXML?

SimpleXML es una nueva característica en PHP 5. En caso de conocer la estructura del documento XML, es una manera conveniente de obtener atributos y texto de los elementos.

En comparación con los analizadores DOM o Expat, SimpleXML puede leer datos de texto de los elementos con solo unas pocas líneas de código.

SimpleXML puede convertir un documento XML en un objeto, por ejemplo:

  • Elemento - Convertido en un objeto SimpleXMLElement. Cuando hay múltiples elementos en el mismo nivel, se colocan en un array.
  • Atributos - Se accede a través de un array asociativo, donde los índices corresponden a los nombres de los atributos.
  • Datos del elemento - Los datos de texto del elemento se convierten en una cadena. Si un elemento tiene múltiples nodos de texto, se ordenan en el orden en que se encuentran.

Cuando se realizan tareas básicas como las siguientes, SimpleXML es muy rápido de usar:

  • Leer archivo XML
  • Extraer datos de una cadena XML
  • Edición de nodos de texto o atributos

Sin embargo, al manejar XML avanzado, como espacios de nombres, es mejor usar el analizador Expat o XML DOM.

Instalación

Desde PHP 5.0, la función SimpleXML es parte integral del núcleo de PHP. No es necesario instalarla para usar estas funciones.

Usando SimpleXML

A continuación se muestra el archivo XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

Tenemos la intención de obtener el nombre y los datos de los elementos en el archivo XML superior.

Esto es lo que necesitamos hacer:

  1. Cargar el archivo XML
  2. Obtener el nombre del primer elemento
  3. Crear un ciclo en cada nodo hijo utilizando la función children()
  4. Mostrar el nombre y los datos de cada nodo hijo

Ejemplo

<?php
$xml = simplexml_load_file("test.xml");
echo $xml->getName() . "<br />";
foreach($xml->children() as $child)
  {
  echo $child->getName() . ": " . $child . "<br />";
  }
?>

La salida del código anterior es:

note
to: George
from: John
heading: Recordatorio
body: ¡No olvide la reunión!

Más información sobre PHP SimpleXML

Para obtener más información sobre PHP SimpleXML, visite nuestra Manual de referencia de PHP SimpleXML.