1
+ import os
2
+ import xml .etree .ElementTree as xml # 📦 Módulo para trabajar con XML
3
+ import json
4
+ """
5
+ JSON Y XML
6
+ """
7
+
8
+ #JSON: Formato ligero de texto para almacenar datos usando llaves {} y corchetes [].
9
+ #XML: Formato de texto para almacenar datos usando etiquetas <etiqueta> </etiqueta>.
10
+
11
+ #ALT + SHIFT + F
12
+
13
+ # Diccionario de datos con diferentes tipos de valores
14
+ data = {
15
+ "name" : "Complex_303" ,
16
+ "age" : 24 ,
17
+ "birth_date" : "01-01-2001" ,
18
+ "programming_languages" : ["Python" , "SQL" , "C#" ]
19
+ }
20
+
21
+
22
+ #XML
23
+ # Nombre del archivo XML que se va a crear
24
+ xml_file = "Complex_303.xml"
25
+
26
+ # 📌 Definir función para guardar los datos en formato XML
27
+ def create_xml ():
28
+
29
+ # Crear elemento raíz del XML llamado <data>
30
+ root = xml .Element ("data" )
31
+
32
+ # Recorrer el diccionario data clave-valor
33
+ for key , value in data .items ():
34
+ # Crear un subelemento para cada clave (ej. <name>, <age>, etc.)
35
+ child = xml .SubElement (root , key )
36
+
37
+ # Si el valor es una lista (ej. lista de lenguajes de programación)
38
+ if isinstance (value , list ):
39
+ # Por cada elemento en la lista, crear un subelemento <item> y asignarle su valor
40
+ for item in value :
41
+ xml .SubElement (child , "item" ).text = item
42
+ else :
43
+ # Si no es lista, se asigna directamente el valor como texto
44
+ child .text = str (value )
45
+
46
+ # Crear árbol XML a partir del elemento raíz
47
+ tree = xml .ElementTree (root )
48
+
49
+ # Escribir el árbol en un archivo XML
50
+ tree .write (xml_file )
51
+
52
+ # 📌 Llamar a la función para generar el archivo
53
+ create_xml ()
54
+
55
+ #Abril el archivo y leerlo
56
+ with open (xml_file , "r" ) as xml_data :
57
+ print (xml_data .read ())
58
+
59
+ #os.remove(xml_file) #borrarlo
60
+
61
+
62
+ #JSON
63
+ json_file = "Complex_303.json"
64
+
65
+
66
+ def create_json ():
67
+
68
+ # 📌 Abrimos (o creamos) el archivo en modo escritura ("w")
69
+ # con el nombre json_file, y lo llamamos json_data dentro del bloque
70
+ with open (json_file , "w" ) as json_data :
71
+ # Convertimos un diccionario (o cualquier estructura válida) a JSON
72
+ # y lo escribimos en el archivo abierto
73
+ json .dump (data , json_data )
74
+
75
+ create_json ()
76
+
77
+ # Ahora abrimos el mismo archivo pero en modo lectura ("r")
78
+ with open (json_file , "r" ) as json_data :
79
+ # Leemos todo el contenido del archivo JSON y lo mostramos por pantalla
80
+ print (json_data .read ())
81
+
82
+ # Finalmente eliminamos el archivo JSON que creamos
83
+ #os.remove(json_file)
84
+
85
+
86
+ """ DIFICULTAD EXTRA (opcional):
87
+ * Utilizando la lógica de creación de los archivos anteriores, crea un
88
+ * programa capaz de leer y transformar en una misma clase custom de tu
89
+ * lenguaje los datos almacenados en el XML y el JSON.
90
+ * Borra los archivos."""
91
+
92
+
93
+ # Definimos una clase llamada Data para almacenar información estructurada
94
+ class Data :
95
+ # Método constructor que se ejecuta al crear una instancia de Data
96
+ def __init__ (self , name , age , birth_date , programming_languages ):
97
+ # Guardamos los valores recibidos en atributos de la clase
98
+ self .name = name
99
+ self .age = age
100
+ self .birth_date = birth_date
101
+ self .programming_language = programming_languages
102
+
103
+
104
+ # Abrimos el archivo XML en modo lectura
105
+ with open ("Complex_303.xml" , "r" ) as xml_data :
106
+ # Leemos y convertimos el contenido XML en una estructura de árbol
107
+ root = xml .fromstring (xml_data .read ())
108
+
109
+ # Buscamos y extraemos el texto de cada etiqueta usando find()
110
+ name = root .find ("name" ).text
111
+ age = root .find ("age" ).text
112
+ birth_date = root .find ("birth_date" ).text
113
+
114
+ # Creamos una lista vacía para almacenar los lenguajes de programación
115
+ programming_languages = []
116
+ # Iteramos sobre los elementos <item> dentro de <programming_languages>
117
+ for item in root .find ("programming_languages" ):
118
+ programming_languages .append (item .text )
119
+
120
+ # Creamos una instancia de la clase Data usando los valores extraídos del XML
121
+ xml_class = Data (name , age , birth_date , programming_languages )
122
+ # Imprimimos los atributos de esa instancia en forma de diccionario
123
+ print (xml_class .__dict__ )
124
+
125
+
126
+ # Abrimos el archivo JSON en modo lectura
127
+ with open ("Complex_303.json" , "r" ) as json_data :
128
+ # Cargamos el contenido JSON y lo convertimos en diccionario de Python
129
+ json_dict = json .load (json_data )
130
+
131
+ #Creamos una instancia de la clase Data usando los valores extraídos del JSON
132
+ json_class = Data (
133
+ json_dict ["name" ],
134
+ json_dict ["age" ],
135
+ json_dict ["birth_date" ],
136
+ json_dict ["programming_languages" ]
137
+ )
138
+
139
+ #Imprimimos los atributos de esa instancia en forma de diccionario
140
+ print (json_class .__dict__ )
141
+
142
+
143
+ # Eliminamos los archivos XML y JSON que habíamos usado
144
+ os .remove ("Complex_303.xml" )
145
+ os .remove ("Complex_303.json" )
146
+
147
+
148
+
149
+
150
+
151
+ # fromstring() Convierte texto XML en árbol DOM
152
+ # find() Busca una etiqueta XML específica
153
+ # for item in ... Itera sobre subetiquetas <item> dentro de una lista XML
154
+ # json.load() Carga un JSON desde archivo a diccionario
155
+ # __dict__ Devuelve los atributos de una instancia como diccionario
156
+ # os.remove() Borra archivos físicos del sistema
0 commit comments