1
+ '''EJERCICIO:
2
+ Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
3
+ siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
4
+ - Nombre
5
+ - Edad
6
+ - Fecha de nacimiento
7
+ - Listado de lenguajes de programación
8
+ Muestra el contenido de los archivos.
9
+ Borra los archivos.
10
+ DIFICULTAD EXTRA (opcional):
11
+ Utilizando la lógica de creación de los archivos anteriores, crea un
12
+ programa capaz de leer y transformar en una misma clase custom de tu
13
+ lenguaje los datos almacenados en el XML y el JSON.
14
+ Borra los archivos.'''
15
+
16
+ import json
17
+ import xml .etree .ElementTree as xml
18
+ import os
19
+
20
+ data = {
21
+ 'name' : 'Santiago Bailleres' ,
22
+ 'age' : 25 ,
23
+ 'birth_date' : '25-06-1999' ,
24
+ 'programming_languages' : ['Python' , 'JavaScript' , 'Java' ]
25
+ }
26
+
27
+ xml_file = 'santiagobailleres.xml'
28
+ json_file = 'santiagobailleres.json'
29
+
30
+ # Crear archivo XML
31
+ def create_xml ():
32
+ root = xml .Element ('data' ) # Crear elemento raíz
33
+
34
+ for key , value in data .items (): # Recorrer diccionario
35
+ child = xml .SubElement (root , key ) # Crear elemento hijo para cada par clave-valor
36
+ if isinstance (value , list ): # isinstance() devuelve True si el objeto es una instancia de la clase especificada
37
+ for item in value : # Si el valor es una lista, recorrerla
38
+ xml .SubElement (child , 'item' ).text = item # Crear un elemento hijo para cada item de la lista
39
+ else :
40
+ child .text = str (value ) # Si no es una lista, asignar el valor como texto del elemento hijo
41
+ tree = xml .ElementTree (root ) # Crear árbol XML. un arbol XML es un objeto que representa la estructura de un documento XML
42
+ tree .write (xml_file ) # Escribir árbol XML en archivo
43
+
44
+ create_xml ()
45
+
46
+ with open (xml_file , 'r' ) as xml_data :
47
+ print (xml_data .read ())
48
+
49
+ os .remove (xml_file )
50
+
51
+ # Crear archivo JSON
52
+ def create_json ():
53
+ with open (json_file , 'w' ) as json_data :
54
+ json .dump (data , json_data ) # json.dump() escribe un objeto JSON en un archivo
55
+
56
+ create_json ()
57
+
58
+ with open (json_file , 'r' ) as json_data :
59
+ print (json_data .read ())
60
+
61
+ os .remove (json_file )
62
+
63
+ # la libreria os permite interactuar con el sistema operativo, en este caso se utiliza para borrar los archivos creados
64
+
65
+ # EXTRA
66
+
67
+ create_json ()
68
+ create_xml ()
69
+
70
+ class Data :
71
+ def __init__ (self , name , age , birth_date , programming_languages ):
72
+ self .name = name
73
+ self .age = age
74
+ self .birth_date = birth_date
75
+ self .programming_languages = programming_languages
76
+
77
+ with open (xml_file , 'r' ) as xml_data :
78
+ root = xml .fromstring (xml_data .read ()) # fromstring() convierte una cadena XML en un objeto Element
79
+ name = root .find ('name' ).text
80
+ age = int (root .find ('age' ).text )
81
+ birth_date = root .find ('birth_date' ).text
82
+ programming_languages = [item .text for item in root .find ('programming_languages' )] # Recorrer los elementos hijos de la lista y guardar su texto en una lista
83
+
84
+ xml_class = Data (name , age , birth_date , programming_languages )
85
+ print (xml_class .__dict__ ) # __dict__ devuelve un diccionario que contiene los atributos de la clase
86
+
87
+ with open (json_file , 'r' ) as json_data :
88
+ json_class = Data (** json .load (json_data )) # **kwargs desempaqueta el diccionario y pasa sus elementos como argumentos a la clase
89
+ print (json_class .__dict__ )
90
+
91
+ os .remove (xml_file )
92
+ os .remove (json_file )
0 commit comments