Leyendo XML desde CakePHP

Si te ves en la necesidad de leer un archivo XML desde CakePHP lo puedes lograr fácilmente a través de una clase provista. Si estás desde un Controlador o Helper puedes utilizar el siguiente código para leer un archivo XML.

<?php
class SampleHelper extends AppHelper {
  function readXML() {
    // Cargamos la clase XML de CakePHP.
    App::import('Xml');
    // Leemos nuestro archivo XML.
    $xml_content =& new XML('sample.xml');
    // Para facilidad de uso convertimos nuestro archivo XML en un
    // arreglo legible.
    $xml_array = $xml_content->toArray(false);
  }
}
?>

Listo, en la variable $xml_content tendrás la representación pura de un archivo XML y en la variable $xml_array tendrás un arreglo legible de tu archivo XML.

Si estuviéramos utilizando el siguiente archivo XML:

<?xml version="1.1" encoding="UTF-8" ?>
<menu>
  <item name="Home" url="pages/home" />
  <item name="Courses" url="pages/courses" />
  <item name="Portfolio" url="pages/portfolio" />
  <item name="Contact" url="pages/contact" />
</menu> 

Obtendríamos el siguiente contenido para la variable $xml_array:

Array
(
  [menu] => Array
    (
      [item] => Array
        (
          [0] => Array
            (
              [name] => Home
              [url] => pages/home
            )
          [1] => Array
            (
              [name] => Courses
              [url] => pages/courses
            )
          [2] => Array
            (
              [name] => Portfolio
              [url] => pages/portfolio
            )
          [3] => Array
            (
              [name] => Contact
              [url] => pages/contact
            )
         )
      )
)

La representación pura del XML no se la mostraré porque es muy verbosa.

¿Cómo localizar tus archivos XML?

Esa fue mi primera pregunta cuando seguí el ejemplo de la documentación oficial de CakePHP. Los archivos XML se leen a partir del directorio /cake/libs/ esto significa que se debe subir dos niveles de manera relativa para hacer referencias a nuestros archivos. Les presento unos ejemplos.

Ubicación de tu archivo:Ruta a utilizar:
/app/views/helpers/menu.xml../../app/views/helpers/menu.xml
/app/models/datasources/db.xml../../app/models/datasources/db.xml

Esto se debe porque la clase XML de CakePHP está localizada en /cake/libs/ entonces, esta buscará relativamente cualquier archivo.

¿Preguntas? Dejalas en los comentarios.

1 comentario

  1. jonathan calderon

    Como puedo hacer en cake para guardar mi xml en un archivo nuevamente?

Deja un comentario

*
*