1
+ import * as fs from 'fs' ;
2
+ import * as xml2js from 'xml2js' ;
3
+
4
+ // Definición de la interfaz para la estructura de datos de la persona
5
+ interface Persona {
6
+ nombre : string ;
7
+ edad : number ;
8
+ fechaNacimiento : string ;
9
+ lenguajesProgramacion : string [ ] ;
10
+ }
11
+
12
+ // Datos de ejemplo
13
+ const persona : Persona = {
14
+ nombre : "Juan" ,
15
+ edad : 30 ,
16
+ fechaNacimiento : "1993-05-15" ,
17
+ lenguajesProgramacion : [ "TypeScript" , "JavaScript" , "Python" ]
18
+ } ;
19
+
20
+ // Función para crear el archivo XML
21
+ function crearArchivoXML ( datos : Persona ) : void {
22
+ const builder = new xml2js . Builder ( ) ;
23
+ const xml = builder . buildObject ( { persona : datos } ) ;
24
+ fs . writeFileSync ( 'datos.xml' , xml ) ;
25
+ console . log ( "Archivo XML creado." ) ;
26
+ }
27
+
28
+ // Función para crear el archivo JSON
29
+ function crearArchivoJSON ( datos : Persona ) : void {
30
+ fs . writeFileSync ( 'datos.json' , JSON . stringify ( datos , null , 2 ) ) ;
31
+ console . log ( "Archivo JSON creado." ) ;
32
+ }
33
+
34
+ // Función para mostrar el contenido de un archivo
35
+ function mostrarContenidoArchivo ( nombreArchivo : string ) : void {
36
+ console . log ( `Contenido del archivo ${ nombreArchivo } :` ) ;
37
+ console . log ( fs . readFileSync ( nombreArchivo , 'utf8' ) ) ;
38
+ }
39
+
40
+ // Función para borrar un archivo
41
+ function borrarArchivo ( nombreArchivo : string ) : void {
42
+ fs . unlinkSync ( nombreArchivo ) ;
43
+ console . log ( `El archivo ${ nombreArchivo } ha sido borrado.` ) ;
44
+ }
45
+
46
+ // Función para leer el archivo XML
47
+ async function leerXML ( nombreArchivo : string ) : Promise < Persona > {
48
+ const xmlData = fs . readFileSync ( nombreArchivo , 'utf8' ) ;
49
+ return new Promise ( ( resolve , reject ) => {
50
+ xml2js . parseString ( xmlData , ( err , result ) => {
51
+ if ( err ) {
52
+ reject ( err ) ;
53
+ } else {
54
+ resolve ( result . persona as Persona ) ;
55
+ }
56
+ } ) ;
57
+ } ) ;
58
+ }
59
+
60
+ // Función para leer el archivo JSON
61
+ function leerJSON ( nombreArchivo : string ) : Persona {
62
+ const jsonData = fs . readFileSync ( nombreArchivo , 'utf8' ) ;
63
+ return JSON . parse ( jsonData ) as Persona ;
64
+ }
65
+
66
+ // Función principal asíncrona
67
+ async function main ( ) : Promise < void > {
68
+ // Crear y mostrar archivo XML
69
+ crearArchivoXML ( persona ) ;
70
+ mostrarContenidoArchivo ( 'datos.xml' ) ;
71
+
72
+ // Crear y mostrar archivo JSON
73
+ crearArchivoJSON ( persona ) ;
74
+ mostrarContenidoArchivo ( 'datos.json' ) ;
75
+
76
+ // Borrar archivos
77
+ borrarArchivo ( 'datos.xml' ) ;
78
+ borrarArchivo ( 'datos.json' ) ;
79
+
80
+ // DIFICULTAD EXTRA
81
+ // Crear archivos nuevamente para la lectura
82
+ crearArchivoXML ( persona ) ;
83
+ crearArchivoJSON ( persona ) ;
84
+
85
+ try {
86
+ // Leer y transformar datos
87
+ const personaXML = await leerXML ( 'datos.xml' ) ;
88
+ const personaJSON = leerJSON ( 'datos.json' ) ;
89
+
90
+ console . log ( "\nDatos leídos del XML:" ) ;
91
+ console . log ( personaXML ) ;
92
+ console . log ( "\nDatos leídos del JSON:" ) ;
93
+ console . log ( personaJSON ) ;
94
+ } catch ( error ) {
95
+ console . error ( "Error al leer los archivos:" , error ) ;
96
+ }
97
+
98
+ // Borrar archivos nuevamente
99
+ borrarArchivo ( 'datos.xml' ) ;
100
+ borrarArchivo ( 'datos.json' ) ;
101
+ }
102
+
103
+ // Ejecutar la función principal
104
+ main ( ) . catch ( console . error ) ;
0 commit comments