1
+ ############################# JSON Y XML CON PYTHON ######################################
2
+
3
+
4
+ ### TEORÍA MANEJO DE FICHEROS JSON CON PYTHON
5
+ '''
6
+ JSON (JavaScript Object Notation) es un formato de intercambio de datos muy utilizado por su sencillez y legibilidad.
7
+ Python ofrece el módulo estándar json para trabajar con este formato.
8
+ '''
9
+ #import json
10
+ #
11
+ ## Creación de un fichero json con datos
12
+ #data = {
13
+ # "name" : "manu",
14
+ # "age" : 44,
15
+ # "teacher" : True,
16
+ # "subjects" : ["PIA", "SRI", "IAW"],
17
+ # "detail" : {
18
+ # "high_school" : "IES Al-Andalus",
19
+ # "year" : 2024
20
+ # }
21
+ #}
22
+ #
23
+ #with open("data.json", "w", encoding="utf-8") as file:
24
+ # json.dump(data, file, indent=4, ensure_ascii=False)
25
+ #
26
+ #print("Archivo json generado con éxito")
27
+ #
28
+ ## Leer un fichero json
29
+ #with open("data.json", "r", encoding="utf-8") as file:
30
+ # content = json.load(file)
31
+ #
32
+ #print(type(content))
33
+ #print(content)
34
+ #
35
+ ## Añadir una nueva clave al diccionario a partir del contenido descargado
36
+ #content["detail"]["experience"] = 7
37
+ #
38
+ #with open("data.json", "w", encoding="utf-8") as file:
39
+ # json.dump(content, file, indent=4, ensure_ascii=False)
40
+ #
41
+ #print("Fichero actualizado desde el volcado")
42
+ #
43
+ #### FIN TEORÍA MANEJO DE FICHEROS JSON CON PYTHON
44
+ #
45
+ #### TEORÍA MANEJO DE FICHEROS XML CON PYTHON
46
+ #'''
47
+ #XML (eXtensible Markup Language) es un formato estructurado y extensible usado principalmente para datos jerárquicos.
48
+ #Python ofrece el módulo xml.etree.ElementTree para trabajar con este formato.
49
+ #'''
50
+ #
51
+ ### Crear un archivo xml con python
52
+ #import xml.etree.ElementTree as ET
53
+ #
54
+ ## Crear el elemento raíz
55
+ #raiz = ET.Element("curso")
56
+ #
57
+ ## Añadir subelementos
58
+ #ET.SubElement(raiz, "nombre").text = "Servicios de Red e Internet"
59
+ #ET.SubElement(raiz, "profesor").text = "Manuel Jesús Rodríguez Arabi"
60
+ #ET.SubElement(raiz, "año").text = "2024"
61
+ #
62
+ ## Añadir un subelemento con atributos
63
+ #materias = ET.SubElement(raiz, "materias")
64
+ #materias.set("tipo", "obligatorias")
65
+ #ET.SubElement(materias, "materia").text = "Python"
66
+ #ET.SubElement(materias, "materia").text = "IA"
67
+ #
68
+ ## Crear un árbol y guardar el archivo
69
+ #arbol = ET.ElementTree(raiz)
70
+ #arbol.write("datos.xml", encoding="utf-8", xml_declaration=True)
71
+ #
72
+ #print("Archivo XML creado con éxito.")
73
+ #
74
+ ## Leer un archivo XML
75
+ #arbol = ET.parse("datos.xml")
76
+ #raiz = arbol.getroot()
77
+ #
78
+ ## Recorrer los elementos
79
+ #print("Contenido del archivo XML:")
80
+ #for elem in raiz:
81
+ # print(f"{elem.tag}: {elem.text}")
82
+ #
83
+ ## Añadir un nuevo subelemento
84
+ #nuevo_campo = ET.SubElement(raiz, "duración")
85
+ #nuevo_campo.text = "100 horas"
86
+ #
87
+ ## Guardar los cambios
88
+ #arbol.write("datos_actualizados.xml", encoding="utf-8", xml_declaration=True)
89
+ #
90
+ #print("Archivo XML actualizado.")
91
+
92
+ ### FIN TEORÍA MANEJO DE FICHEROS XML CON PYTHON
93
+
94
+ ## EJERCICIO PROPUESTO
95
+ import json
96
+ import os
97
+ from os .path import exists
98
+
99
+ if exists ("user_data.json" ):
100
+ os .remove ("user_data.json" )
101
+ if exists ("user_data.xml" ):
102
+ os .remove ("user_data.xml" )
103
+
104
+ user_data = {
105
+ "name" : "Manuel J. Rodríguez" ,
106
+ "age" : 44 ,
107
+ "birthday" : "03/01/1980" ,
108
+ "programming-lamgs" : ["Python" , "PHP" , "C++" , "Java" ]
109
+ }
110
+
111
+ with open ("user_data.json" , "w" , encoding = "utf-8" ) as file :
112
+ json .dump (user_data , file , indent = 4 , ensure_ascii = False )
113
+
114
+ print (f"Fichero { file .name } creado con éxito!!!" )
115
+
116
+ print ()
117
+
118
+ print ("Mostrando datos almacenados" )
119
+
120
+ with open ("user_data.json" , "r" , encoding = "utf-8" ) as file :
121
+ content = json .load (file )
122
+
123
+ print (type (content ))
124
+
125
+ print ("Fin del contenido del fichero JSON" )
126
+
127
+ print ()
128
+
129
+ print ("Inicio de borrado del fichero JSON" )
130
+ #os.remove("user_data.json")
131
+ print ("Fichero eliminado con éxito!!!" )
132
+
133
+ import xml .etree .ElementTree as ET
134
+
135
+ root = ET .Element ("user_data" )
136
+
137
+ ET .SubElement (root , "name" ).text = "Manuel J. Rodríguez"
138
+ ET .SubElement (root , "age" ).text = "44"
139
+ ET .SubElement (root , "birthdate" ).text = "03/01/1980"
140
+
141
+ languages = ET .SubElement (root , "languages" )
142
+ lang1 = ET .SubElement (languages , "language" )
143
+ lang1 .text = "Python"
144
+ lang2 = ET .SubElement (languages , "language" )
145
+ lang2 .text = "PHP"
146
+ lang3 = ET .SubElement (languages , "language" )
147
+ lang3 .text = "Java"
148
+ lang4 = ET .SubElement (languages , "language" )
149
+ lang4 .text = "C++"
150
+
151
+
152
+ tree = ET .ElementTree (root )
153
+ tree .write ("user_data.xml" , encoding = "utf-8" , xml_declaration = True )
154
+
155
+ print ("Archivo XML creado con éxito." )
156
+ print ()
157
+ print ("Lectura del fichero" )
158
+ read_tree = ET .parse ("user_data.xml" )
159
+ read_root = read_tree .getroot ()
160
+
161
+ for data in read_root :
162
+ if data .tag != "languages" :
163
+ print (f"Etiqueta: { data .tag } , texto: { data .text } " )
164
+ else :
165
+ for lang in data :
166
+ print (f"Etiqueta: { lang .tag } , texto: { lang .text } " )
167
+
168
+ print ("Fin de lectura del fichero" )
169
+ print ()
170
+ print ("Borrado del fichero" )
171
+ #os.remove("user_data.xml")
172
+ print ("Fichero eliminado con éxito!!!" )
173
+
174
+ ############################# EJERCICIO EXTRA ######################################
175
+
176
+ # Usaremos los ejemplos creados en el anterior ejercicio.
177
+
178
+ json_to_dict = {}
179
+ xml_to_dict = {}
180
+ users = []
181
+
182
+ with open ('user_data.json' , "r" , encoding = "utf-8" ) as file :
183
+ json_to_dict = json .load (file ) # Devuelve un diccionario
184
+
185
+ my_tree = ET .parse ("user_data.xml" )
186
+ my_root = my_tree .getroot ()
187
+ #xml_to_dict = {data.tag : data.text for data in my_root} #Generamos el diccionario
188
+ i = 1
189
+ for data in my_tree .getroot ():
190
+ if data .tag != "languages" :
191
+ xml_to_dict [data .tag ] = data .text
192
+ else :
193
+ for lang in data :
194
+ xml_to_dict [lang .tag + str (i )] = lang .text
195
+ i += 1
196
+
197
+ print (json_to_dict )
198
+ print ()
199
+ print (xml_to_dict )
200
+ users .append (json_to_dict )
201
+ users .append (xml_to_dict )
202
+ print (users )
203
+ os .remove ("user_data.json" )
204
+ os .remove ("user_data.xml" )
205
+
206
+
207
+ ############################# FIN EJERCICIO EXTRA ######################################
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+ ############################# FIN JSON Y XML CON PYTHON ######################################
0 commit comments