|
| 1 | +""" |
| 2 | +* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio. |
| 3 | +* |
| 4 | +* EJERCICIO: |
| 5 | +* Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los |
| 6 | +* siguientes datos (haciendo uso de la sintaxis correcta en cada caso): |
| 7 | +* - Nombre |
| 8 | +* - Edad |
| 9 | +* - Fecha de nacimiento |
| 10 | +* - Listado de lenguajes de programación |
| 11 | +* Muestra el contenido de los archivos. |
| 12 | +* Borra los archivos. |
| 13 | +* |
| 14 | +* DIFICULTAD EXTRA (opcional): |
| 15 | +* Utilizando la lógica de creación de los archivos anteriores, crea un |
| 16 | +* programa capaz de leer y transformar en una misma clase custom de tu |
| 17 | +* lenguaje los datos almacenados en el XML y el JSON. |
| 18 | +* Borra los archivos. |
| 19 | +""" |
| 20 | + |
| 21 | +import json |
| 22 | +import os |
| 23 | + |
| 24 | +# Crear archivo json |
| 25 | + |
| 26 | +datos_json = { |
| 27 | + "Nombre": "Christian", |
| 28 | + "Edad": "30", |
| 29 | + "Fecha de nacimiento": "01/05/1994", |
| 30 | + "Listado de lenguajes": ["Python", "JavaScript", "React"] |
| 31 | +} |
| 32 | + |
| 33 | +file_name = "Chrisdev00.json" |
| 34 | + |
| 35 | +with open(file_name, "w") as file_json: |
| 36 | + json.dump(datos_json, file_json, indent=4) # (ident=) para que el archivo json tenga una apariencia mas legible con identaciones |
| 37 | + |
| 38 | +# Mostrar el contenido |
| 39 | + |
| 40 | +with open(file_name, "r") as file_json: |
| 41 | + lista_datos = json.load(file_json) |
| 42 | + |
| 43 | +print("Datos en el archivo JSON") |
| 44 | +for clave, valor in lista_datos.items(): |
| 45 | + print(f"{clave}: {valor}") |
| 46 | + |
| 47 | +# Borrar el archivo |
| 48 | + |
| 49 | +if os.path.exists(file_name): |
| 50 | + #os.remove(file_name) comentamos esta parte para que el ejercicio extra no de error |
| 51 | + pass |
| 52 | +else: |
| 53 | + print("El archivo no existe") |
| 54 | + |
| 55 | + |
| 56 | +# Crear archivo XML |
| 57 | + |
| 58 | +import xml.etree.ElementTree as ET |
| 59 | + |
| 60 | +root = ET.Element("datos") |
| 61 | + |
| 62 | +nombre = ET.SubElement(root, "nombre") |
| 63 | +nombre.text = "Christian" |
| 64 | + |
| 65 | +edad = ET.SubElement(root, "edad") |
| 66 | +edad.text = "30" |
| 67 | + |
| 68 | +fecha_nacimiento = ET.SubElement(root, "fecha_nacimiento") |
| 69 | +fecha_nacimiento.text = "01/05/1994" |
| 70 | + |
| 71 | +lenguajes = ET.SubElement(root, "Listado_de_lenguajes") |
| 72 | +lenguajes.text = "Python, JavaScript, React" |
| 73 | + |
| 74 | +tree_xml = ET.ElementTree(root) |
| 75 | +file_name_xml = "Chrisdev00.xml" |
| 76 | + |
| 77 | +tree_xml.write(file_name_xml, encoding="utf-8", xml_declaration=True) |
| 78 | + |
| 79 | +# mostrar datos |
| 80 | + |
| 81 | +tree_xml = ET.parse(file_name_xml) |
| 82 | + |
| 83 | +raiz = tree_xml.getroot() |
| 84 | + |
| 85 | +print("Datos en el archivo XML") |
| 86 | +for elemento in raiz: |
| 87 | + print(f"{elemento.tag}: {elemento.text}") |
| 88 | + |
| 89 | +# borrar archivo |
| 90 | + |
| 91 | +#os.remove(file_name_xml) comentamos esta parte para que funcione el ejercicio extra |
| 92 | + |
| 93 | + |
| 94 | +##### -------------------------------- EXTRA -------------------------------------------- ######## |
| 95 | + |
| 96 | + |
| 97 | + |
| 98 | +class DatosPersonales: |
| 99 | + |
| 100 | + def __init__(self, nombre, edad, fecha_nacimiento, lenguajes): |
| 101 | + self.nombre = nombre |
| 102 | + self.edad = edad |
| 103 | + self.fecha_nacimiento = fecha_nacimiento |
| 104 | + self.lenguajes = lenguajes |
| 105 | + |
| 106 | + @classmethod |
| 107 | + def leer_json (cls, nombre_archivo_json): |
| 108 | + with open(nombre_archivo_json, "r") as file: |
| 109 | + datos_jso = json.load(file) |
| 110 | + return cls( |
| 111 | + datos_jso["Nombre"], |
| 112 | + datos_jso["Edad"], |
| 113 | + datos_jso["Fecha de nacimiento"], |
| 114 | + datos_jso["Listado de lenguajes"], |
| 115 | + ) |
| 116 | + |
| 117 | + @classmethod |
| 118 | + def leer_xml (cls, nombre_archivo_xml): |
| 119 | + tree_xml = ET.parse(nombre_archivo_xml) |
| 120 | + raiz = tree_xml.getroot() |
| 121 | + nombre = raiz.find("nombre").text |
| 122 | + edad = raiz.find("edad").text |
| 123 | + fecha_nacimiento = raiz.find("fecha_nacimiento").text |
| 124 | + lenguajes_str = raiz.find("Listado_de_lenguajes").text |
| 125 | + lenguajes = lenguajes_str.split(", ") |
| 126 | + #lenguajes = [lenguaje.text for lenguaje in raiz.find("Listado_de_lenguajes")] |
| 127 | + return cls(nombre, edad, fecha_nacimiento, lenguajes) |
| 128 | + |
| 129 | + def __str__(self): |
| 130 | + return f"Nombre: {self.nombre}\nEdad: {self.edad}\nFecha de nacimiento: {self.fecha_nacimiento}\nLenguajes: {', '.join(self.lenguajes)}" |
| 131 | + |
| 132 | +desde_json = DatosPersonales.leer_json("Chrisdev00.json") |
| 133 | +desde_xml = DatosPersonales.leer_xml("Chrisdev00.xml") |
| 134 | + |
| 135 | +print("\nDatos desde JSON:") |
| 136 | +print(desde_json) |
| 137 | +print("\nDatos desde XML:") |
| 138 | +print(desde_xml) |
| 139 | + |
| 140 | + |
0 commit comments