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