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