Procesar archivos xml con xmlstarlet - Electronik-Pro, Informatica, Noticas,Wordpress,Facebook,Hacking,Programas,Hosting,Dominios

Hoy en día resulta bastante común encontrar aplicaciones que guardan información en ficheros xml.

xmlstarlet es una interesante herramienta de línea de comandos que nos va a permitir obtener datos de un fichero xml, modificarlo o validarlo.

En nuestro caso, a principios de curso, creamos las cuentas de los usuarios a partir de ficheros .xml generados mediante Rayuela. Pues bien, podemos utilizar xmlstarlet para procesar estos ficheros y obtener la información que necesitamos para convertirla a otro formato, como por ejemplo .csv

Supongamos que el fichero de exportación de alumnos almacena la información de cada alumno de la siguiente manera:
<alumno>
   <nie>9496969</nie>
   <nombre>Pedro</nombre>
   <primer-apellido>Aguilar</primer-apellido>
   <segundo-apellido>Cobo</segundo-apellido>
   <fecha-nacimiento>20/10/2002</fecha-nacimiento>
   <datos-usuario-rayuela>
      <es-usuario>true</es-usuario>
      <login>paguilarc01</login>
      <id-usuario>597450</id-usuario>
   </datos-usuario-rayuela>
   <grupo>E1A</grupo>
   <foto>
      <con-foto>true</con-foto>
      <formato>jpg</formato>
      <nombre-fichero>9496969.jpg</nombre-fichero>
   </foto>
</alumno>
Podemos extraer los datos de nie, nombre, primer-apellido, segundo-apellido y login de todos los alumnos y almacenarlos en un fichero csv con la siguiente estructura: 
9496969,Pedro,Aguilar Cobo,paguilarc01

Con tan sólo ejecutar el comando:
$ xmlstarlet sel -t -m //alumnado-centro/alumno -v nie -o "," -v nombre -o "," -v primer-apellido -o " " -v segundo-apellido -o "," -m datos-usuario-rayuela -v login -n Alumnos.xml
Si analizáis la sintaxis anterior veréis que es muy sencilla:
  • Utilizando la opción de selección (sel), aplicamos la plantilla (-t) que le indicamos a continuación al comando.
  • Procesamos cada entidad alumno (//alumnado-centro/alumno) y extraemos su nie (-v nie).
  • Insertamos una coma (-o ",") en la salida.
  • Extraemos el nombre (-v nombre).
  • Insertamos una coma (-o ",") en la salida.
  • Extraemos el primer-apellido (-v primer-apellido). 
  • Insertamos una coma (-o ",") en la salida.
  • Extraemos el segundo-apellido (-v segundo-apellido). 
  • Y de la entidad datos-usuario-rayuela del alumno (-m datos-usuario-rayuela -v login) extraemos su login.
  • E insertamos un salto de línea (-n) en la salida.
Del mismo modo, podemos extraer datos del fichero de exportación de datos de profesores puesto que la estructura es similar:
$ xmlstarlet sel -t -m //profesorado-centro/profesor -v dni -o "," -v nombre -o "," -v primer-apellido -o " " -v segundo-apellido -o "," -m datos-usuario-rayuela -v login -o "@iesvalledeljerteplasencia.es" -n ExportacionDatosProfesorado.xml
Publicado por primera vez en http://enavas.blogspot.com.es

0 comentarios:

Publicar un comentario

 
Top