Skip to content

Commit 166ebc6

Browse files
#12 - Python
1 parent 48a2d49 commit 166ebc6

File tree

1 file changed

+92
-0
lines changed

1 file changed

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

Comments
 (0)