Skip to content

Commit 6f8a0c0

Browse files
committed
#12 typescript
1 parent 8139e3d commit 6f8a0c0

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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

Comments
 (0)