Lectura y tratamiento de ficheros XML con Talend

1
10673

Lectura y tratamiento de ficheros XML con Talend.

0. Índice de contenidos.


1. Introducción

En este tutorial veremos como la herramienta Talend nos permite de manera sencilla extraer, manipular y cargar la información de ficheros XML.

Talend, como ya vimos en el tutorial anterior ‘
Lectura y tratamiento de ficheros Excel con Talend (I): nociones básicas.
‘, es una herramienta de diseño ETL (Extract, Transform, Load), que permite manipular la información de distintas fuentes de datos.

En este tutorial nos centramos en el tratamiento de información sobre ficheros del tipo XML (eXtensible Markup Language).


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.2 GHz Intel Core i7 Duo, 8GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Lion 10.7.3 (11D50d)
  • Talend Open Studio V5.1.1 r84309


3. Lectura y tratamiento de ficheros XML

Como ya sabemos XML es un Lenguaje de Etiquetado Extensible simple que permite el intercambio de una gran cantidad de datos.

A menudo es tedioso el proceso de parseo de este tipo de ficheros, por lo que Talend nos ofrece la posibilidad de realizar dicha labor de manera sencilla, sin necesidad de conocer el API de distintas librerías, ni tener que hacer peripecias para obtener los nodos del fichero así como la información que representan.

Para manipular ficheros xml, Talend nos ofrece el componente de entrada de ficheros tFileInputXml.

En este tutorial veremos un sencillo de ejemplo de manipulación de un fichero XML, así como el uso completo de dicho componente.

Partimos de un fichero xml con el siguiente contenido:



    Listado de productos
    
        Pantalla
        Pantalla LED para ordenador
        
            EUR
            100
        
    
    
        Teclado
        Teclado para ordenador por USB
        
            EUR
            23
        
         
    
    
        Ratón
        Ratón ordenador portatil
        
            EUR
            10
        
    

Como vemos, es una representación sencilla de una lista de productos, así como la descripción de los mismos, su precio y la moneda.

Lo primero de todo es crear un nuevo trabajo en el entorno de Talend. Para ello, como ya hemos visto con anterioridad, realizamos click derecho sobre ‘Job Design’ para crear el trabajo, le damos un nombre y pulsamos en finalizar.

Ya tenemos listo nuestro entorno de desarrollo en Talend.

Seleccionamos de la paleta de componentes el componente tFileInputXml y lo arrastramos a nuestro diagrama de trabajo:

Lo primero es configurar nuestro componente para que conozca la ruta física donde está el fichero xml. Para ello configuramos la propiedad ‘Nombre del Archivo/Flujo’, en nuestro caso el fichero se llama productos.xml:

A continuación editamos su esquema mediante la opción ‘Edit schema’, y creamos una columna ‘Producto‘ que representará la información completa de cada nodo Producto:

El siguiente paso es configurar el componente para que conozca cual es el nodo a partir del cual debe leer, y que nodo representa cada Producto. Para navegar por los distintos nodos del fichero xml, el componente utiliza Xpath ( http://www.w3schools.com/xpath). Xpath (Xml path language) se trata de un lenguaje que permite construir sentencias que recorren y procesan un documento xml. Podemos ver tutoriales muy interesantes ya publicados en https://adictosaltrabajo.com

Aplicamos la siguiente configuración:

  • Loop Xpath query: Nodo padre a partir del cual leer la información del xml aplicando Xpath.
  • Mapping: Se define cada columna del flujo de salida y su correspondencia con Xpath. Aparte podemos marcar el check ‘Get Nodes‘ para que arrastre la información de todos los nodos hijos o de niveles inferiores.

Por ejemplo hemos configurado que la columna del flujo de salida ‘Producto’ serán todos los nodos (expresión Xpath ‘.’) a partir del nodo definido en ‘Loop Xpath query’, es decir a partir del nodo root/Producto.

Añadimos un compontente de log ‘tLogRow’ y dirigimos el flujo principal del componente tFileInputXML hacía el componente tLogRow:

Resultando el esquema:

Al ejecutar el trabajo mediante el botón ‘Play‘ obtenemos el siguiente resultado:

Como podemos ver nos ha devuelto la información de cada nodo Producto del fichero xml.

Ahora mediante Xpath obtendremos la información de los nodos que forman un producto en distintas columnas del flujo de salida. Para ello editamos el esquema del componente añadiendo las columnas correspondientes:

En las preferencias del componente establecemos las expresiones Xpath adecuadas para recuperar la información de cada nodo y reflejarla en cada columna del flujo de salida:

Analizando las expresiones Xpath de cada columna:

  • Nombre: Nodo nombre a partir del nodo padre definido /root/Producto
  • Descripcion: Nodo nombre a partir del nodo padre definido /root/Producto
  • Moneda: Obtener el nodo ‘Moneda’ que es hijo del nodo ‘Precio’ (devolverá la información del nodo /root/Producto/Moneda/Valor)
  • Valor: Obtener el nodo ‘Valor’ que es hijo del nodo ‘Precio’ (devolverá la información del nodo /root/Producto/Precio/Valor)

A continuación al ejecutar el trabajo podemos observar que obtenemos la información adecuada de cada uno de los nodos definidos en el componente:

Talend nos permite volcar el flujo de información proveniente de un fichero a otro fichero con la misma u otra tipología que el fichero origen.

En nuestro ejemplo utilizamos el componente tFileOutputXml, el cual tiene un funcionamiento similar al componente visto en tutoriales anteriores tFileOutputExcel.

Ponemos dicho componente en nuestra zona de trabajo y dirigimos el flujo de salida del componente tLogRow hacía el nuevo componente:

Configuramos el componente tFileOutputXml:

Básicamente indicamos el nombre y ruta del fichero de salida. Por otro lado podemos ver que dicho componente permite editar su esquema de salida.

Por otro lado si pulsamos en las preferencias sobre la pestaña ‘Advanced Settings’ en las propiedades del componente, podemos observar que el componente tFileOutputXml ofrece propiedades interesantes, como por ejemplo para crear el directorio de la ruta física de destino sino existe, o como dividir la información en distintos ficheros Xml.

Trás ejecutar el trabajo vemos como se crea de manera adecuada el fichero XmlSalida.xml

En resumen Talend nos permite obtener y manipular de manera sencilla el contenido de un fichero XML. En este ejemplo hemos visto de manera detallada el uso de ciertos componentes para el tratamiento de información proveniente de ficheros XML; aunque no son los únicos. La lista completa:

En posteriores tutoriales veremos de manera más detallada el funcionamiento de cada uno de ellos.

Estos son sólo algunos ejemplos para manejar la información un tipo de fichero en concreto, aunque Talend nos provee de una infinidad de componentes para manipular la información desde un fichero cualquiera sea su tipología.


4. Referencias.

  • http://www.talendforge.org/components/


5. Conclusiones.

Como podemos ver la herramienta TALEND nos permite de manera sencilla tratar la información que contienen ficheros XML. Seguiremos aconsejando esta herramienta debido a su licencia libre y a su facilidad de uso.

Espero os haya servido de ayuda. Un saludo.

Daniel Casanova

dcasanova@autentia.com

1 COMENTARIO

  1. Buenas noches chico como estas?

    Espero que te encuentres muy bien, estaba mirando tu ejercicio para el tratamientos de los datos en un archivo XML, y bueno he tenido problemas con un trabajo de la Universidad que me encuentro realizando, si me podrias ayudar a solucionar el inconveniente que tengo te lo agradeciera en el alma,ya que hace buen rato que estoy dando con lo mismo y no he podido, tu ejercico me aclaro muchas cosas pero no se que estoy haciendo mal que no he podido culminar el ejercicio.

    Espero pronto tu respuesta, y muchas gracias por atencion.

    Att: Meryem Diaz

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad