1
+ const fs = require ( 'fs' )
2
+ const path = require ( 'path' )
3
+
4
+ /*
5
+ * EJERCICIO:
6
+ * Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
7
+ * siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
8
+ * - Nombre
9
+ * - Edad
10
+ * - Fecha de nacimiento
11
+ * - Listado de lenguajes de programación
12
+ * Muestra el contenido de los archivos.
13
+ * Borra los archivos.
14
+ */
15
+
16
+ async function saveData ( ) : Promise < void > {
17
+ const JSONdata = {
18
+ name : 'Victor' ,
19
+ age : 21 ,
20
+ dateOfBirth : new Date ( 2002 , 11 , 17 ) . toDateString ( ) ,
21
+ programmingLanguages : [ 'JavaScript' , 'TypeScript' , 'Python' , 'PHP' ]
22
+ }
23
+
24
+ const xmlData = `
25
+ <root>
26
+ <name>Victor</name>
27
+ <age>21</age>
28
+ <dateOfBirth>2002-11-17</dateOfBirth>
29
+ <programmingLanguages>
30
+ <language>JavaScript</language>
31
+ <language>TypeScript</language>
32
+ <language>Python</language>
33
+ <language>PHP</language>
34
+ </programmingLanguages>
35
+ </root>`
36
+
37
+
38
+ await fs . writeFileSync ( 'data.json' , JSON . stringify ( JSONdata ) )
39
+ fs . writeFileSync ( 'data.xml' , xmlData , 'utf8' )
40
+ console . log ( fs . readFileSync ( 'data.xml' , 'utf8' ) )
41
+ console . log ( fs . readFileSync ( 'data.json' , 'utf8' ) )
42
+ // fs.unlinkSync('data.json')
43
+ // fs.unlinkSync('data.xml')
44
+ }
45
+
46
+ saveData ( )
47
+
48
+ /*
49
+ * DIFICULTAD EXTRA (opcional):
50
+ * Utilizando la lógica de creación de los archivos anteriores, crea un
51
+ * programa capaz de leer y transformar en una misma clase custom de tu
52
+ * lenguaje los datos almacenados en el XML y el JSON.
53
+ * Borra los archivos.
54
+ */
55
+
56
+ class customData {
57
+ file : string
58
+ constructor ( file : string ) {
59
+ this . file = file
60
+ }
61
+
62
+ async readData ( ) : Promise < any > {
63
+ if ( path . extname ( this . file ) === '.json' ) {
64
+ return JSON . parse ( fs . readFileSync ( this . file , 'utf8' ) )
65
+ }
66
+ }
67
+
68
+ async updateData ( ) : Promise < any > {
69
+ if ( path . extname ( this . file ) === '.xml' ) {
70
+ return fs . readFileSync ( 'data.xml' , 'utf8' )
71
+ }
72
+ }
73
+
74
+ async deleteFile ( ) : Promise < void > {
75
+ fs . unlinkSync ( this . file )
76
+ }
77
+ }
78
+
79
+ const dataJson = new customData ( 'data.json' )
80
+ console . log ( dataJson . readData ( ) )
81
+
82
+ const dataXml = new customData ( 'data.xml' )
83
+ console . log ( dataXml . updateData ( ) )
84
+
85
+ dataJson . deleteFile ( )
86
+ dataXml . deleteFile ( )
0 commit comments