Oct 302012
 
Artículo Perl

( Read this post in english )

Existen numerosos módulos disponibles en CPAN que implementan distintas aproximaciones para el proceso de ficheros en formato XML.

El módulo XML::Simple que comentamos en este artículo puede ser el más adecuado para los casos más sencillos, en los que necesitamos leer o generar un fichero de pequeño tamaño que no hace uso de características avanzadas del formato XML.

Ejemplo de fichero en formato XML

El formato XML permite representar en un fichero de texto una estructura jerárquica de elementos, en donde cada elemento consta de una serie de atributos (parejas (nombre,valor)), y una serie de subelementos.

En el siguiente ejemplo vemos un documento XML que contiene un elemento raiz “documento” con dos subelementos “cliente”:

A su vez, los subelementos cliente contienen subelementos “nombre”,”apellido”,”direccion”,etc

También vemos que el elemento “documento” tiene atributos “version” y “timestamp”, y los elementos “cliente” tienen un atributo “identificador”.

Leer un documento XML con XML::Simple

El módulo CPAN XML::Simple permite leer el documento entero en memoria, en forma de una estructura de datos.

Ejemplo:

Con este código, a la variable “$datos” se le asigna una referencia a una hashtable de pares (clave,valor).

Cada clave identifica:

  • un atributo si el valor es un literal simple
  • un array de subelementos si el valor es una referencia a array.

Cada subelemento puede ser:

  • un valor simple
  • una hashref de subelementos del siguiente nivel.

A continuación vemos cómo podemos recorrer esta estructura de datos:

 

La subrutina imprime_elemento es recursiva, se llama a sí misma para cada subelemento del elemento que está siendo procesado. Con este código aplicado al fichero xml de más arriba, se obtiene el resultado:

Escribir un documento XML con XML::Simple

El módulo XML::Simple implementa también el método XMLout, que recibe como argumento una hashref con una estructura de datos como la que produce XMLin, y la convierte a formato XML:

Indice de artículos sobre programación en lenguaje Perl

 Publicado por en 7:10 pm

  2 Respuestas a “Cómo leer y escribir ficheros XML en Perl con XML::Simple”

  1. Hay un problema, al generar la salida, devuelve desordenados los resultados, ser: Nombre en el xml está arriba de todo y en el output está debajo.
    Saludos!

    • Efectivamente, XML::Simple no tiene en cuenta el orden de los elementos. En muchos casos esto no supone un problema. Si lo fuera, podemos utilizar el módulo XML::Parser::PerlSAX, que procesa el documento XML como un stream, y por lo tanto permite tener en cuenta el orden en el que se presentan los elementos en el mismo. Los detalles de uso de este módulo para el proceso de ficheros XML los explicamos en el articulo “Cómo leer y escribir documentos XML en Perl con XML::Parser::PerlSAX” en este mismo blog.

 Deja un comentario

(requerido)

(requerido)