Durante esta práctica, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
Esta práctica debe ser elaborada de manera individual.
Tus archivos fuente deben comenzar con un comentario que contenga el título de la práctica, la fecha y tus datos personales (nombre y matrícula). Por ejemplo:
/*---------------------------------------------------------- * Práctica 3: Utilizando promesas y XML * Fecha: 05-Mar-2020 * Autora: A01166611 Pepper Pots *----------------------------------------------------------*/
Así mismo, es indispensable que cada función, clase o método que definas en tu programa contenga un comentario JSDoc en inglés que describa su correspondiente API (interfaz de programación de aplicaciones). Por ejemplo:
/** * Computes the largest of the two numbers. * * @param {number} x The first number. * @param {number} y The second number. * @return {number} The largest value. */ function maximum(x, y) { if (x > y) { return x; } else { return y; } }
Instala el módulo xml2js
de Node. Desde la terminal teclea:
npm install xml2js
Revisa la documentación de xml2js para ver como usar este módulo.
Crea un directorio llamado practica3
. Coloca en este directorio el siguiente documento XML llamado movies.xml
:
<?xml version="1.0" encoding="UTF-8"?> <!-- Archivo: movies.xml --> <movies> <!-- Esta es una de las mejores películas de todos los tiempos. --> <film name="The Godfather" year="1972"> <cast>Marlon Brando</cast> <cast>Al Pacino</cast> <cast>Diane Keaton</cast> <director>Francis Ford Coppola</director> </film> <!-- Esta es la película más taquillera del 2008. --> <film name="The Dark Knight" year="2008"> <cast>Christian Bale</cast> <director>Christopher Nolan</director> <cast>Maggie Gyllenhaal</cast> <!-- ¿Dónde quedó Katie Holmes? --> <cast>Heath Ledger</cast> <cast>Michael Caine</cast> <cast>Gary Oldman</cast> <cast>Morgan Freeman</cast> </film> <film name="The Mission" year="1986"> <!-- La música fue escrita por Ennio Morricone --> <director>Roland Joffé</director> <cast>Robert De Niro</cast> <cast>Jeremy Irons</cast> </film> <film name="Black Swan" year="2010"> <director> Darren Aronofsky </director> <cast> Natalie Portman </cast> <cast> Mila Kunis </cast> <cast> Vincent Cassel </cast> <cast> Winona Ryder </cast> </film> <film name="The Hobbit: An Unexpected Journey" year="2012"> <director>Peter Jackson</director><cast>Ian McKellen</cast> <cast>Martin Freeman</cast><cast>Andy Serkis</cast></film> <film name="THX 1138" year="1971"/> <film name="The Avengers" year="2012"> <director>Joss Whedon</director> <cast>Robert Downey Jr. <!-- Iron Man --></cast> <cast>Scarlett Johansson <!-- Black Widow --></cast> <cast>Chris Evans <!-- Captain America --></cast> <cast>Samuel L. Jackson <!-- Nick Fury --></cast> <cast>Chris Hemsworth <!-- Thor --></cast> <cast>Mark Ruffalo <!-- The Incredible Hulk --></cast> </film> </movies>
Escribe un programa en Node.js llamado peliculas.js
que, mediante el uso de promesas§, lea y realice el parseo del archivo movies.xml
y que imprima en la salida estándar todas las películas ahí contenidas de la manera como se muestra a continuación:
The Godfather (1972), director: Francis Ford Coppola The Dark Knight (2008), director: Christopher Nolan The Mission (1986), director: Roland Joffé Black Swan (2010), director: Darren Aronofsky The Hobbit: An Unexpected Journey (2012), director: Peter Jackson THX 1138 (1971) The Avengers (2012), director: Joss Whedon
Notar la salida del caso especial que ocurre cuando una película no tiene información del director (THX 1138).
Escribe otro programa en Node.js llamado actores.js
que, mediante el uso de promesas§, lea y realice el parseo del archivo movies.xml
y que imprima en la salida estándar todas los actores ahí contenidos de la manera como se muestra a continuación:
The Godfather Marlon Brando Al Pacino Diane Keaton The Dark Knight Christian Bale Maggie Gyllenhaal Heath Ledger Michael Caine Gary Oldman Morgan Freeman The Mission Robert De Niro Jeremy Irons Black Swan Natalie Portman Mila Kunis Vincent Cassel Winona Ryder The Hobbit: An Unexpected Journey Ian McKellen Martin Freeman Andy Serkis THX 1138 The Avengers Robert Downey Jr. Scarlett Johansson Chris Evans Samuel L. Jackson Chris Hemsworth Mark Ruffalo
Notar que hay una línea en blanco después de cada grupo de actores de una misma película.
§ NOTA: Las promesas se pueden crear explícitamente usando el constructor de Promise
y/o a través de la función promisify
del módulo util
.
Crea un archivo tarball con todo el contenido del directorio practica3
. Nombra a este archivo practica3.tgz
. Este archivo se puede crear desde la terminal tecleando lo siguiente (asegúrate de que te encuentres en el mismo nivel que el directorio practica3
):
tar czf practica3.tgz practica3
Para entregar el archivo practica3.tgz
, ingresa los siguientes datos:
La fecha límite es el jueves 5 de marzo.