Skip to content

Commit 5c6d886

Browse files
authored
Merge pull request mouredev#2545 from CesarCarmona30/main
#12 - Python
2 parents 04ef5fa + ca65abe commit 5c6d886

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
'''
2+
EJERCICIO
3+
'''
4+
5+
import json
6+
import os
7+
import xml.etree.ElementTree as ET
8+
9+
user_data = {
10+
'name': 'César',
11+
'age': 19,
12+
'birthDate': '30-07-2004',
13+
'progLanguages': ['Java', 'C++', 'Python', 'JavaScript']
14+
}
15+
16+
json_name = "CesarCarmona30.json"
17+
18+
with open(json_name, "w", encoding="UTF-8") as file:
19+
json.dump(user_data, file, indent=2, ensure_ascii=False)
20+
21+
with open(json_name, "r", encoding="UTF-8") as file:
22+
json_data = json.load(file)
23+
24+
print(json_data)
25+
26+
os.remove(json_name)
27+
28+
xml_name = "CesarCarmona30.xml"
29+
root = ET.Element("userData")
30+
31+
name = ET.SubElement(root, "name")
32+
name.text = "César"
33+
34+
age = ET.SubElement(root, "age")
35+
age.text = "19"
36+
37+
birth_date = ET.SubElement(root, "birthDate")
38+
birth_date.text = "30-07-2004"
39+
40+
prog_languages = ET.SubElement(root, "progLanguages")
41+
42+
lang_1 = ET.SubElement(prog_languages, "Language")
43+
lang_1.text = "Java"
44+
45+
lang_2 = ET.SubElement(prog_languages, "Language")
46+
lang_2.text = "C++"
47+
48+
lang_3 = ET.SubElement(prog_languages, "Language")
49+
lang_3.text = "Python"
50+
51+
lang_4 = ET.SubElement(prog_languages, "Language")
52+
lang_4.text = "JavaScript"
53+
54+
tree= ET.ElementTree(root)
55+
tree.write(xml_name, "utf-8", True)
56+
57+
xml_data = ET.parse(xml_name)
58+
root_data= xml_data.getroot()
59+
for data in root_data:
60+
if data.tag == "progLanguages":
61+
print(f'{data.tag}:')
62+
for lang in data.findall('Language'):
63+
print(f"\t{lang.tag}: {lang.text}")
64+
else:
65+
print(f'{data.tag}: {data.text}')
66+
67+
os.remove(xml_name)
68+
69+
'''
70+
EXTRA
71+
'''
72+
73+
class UserData:
74+
def __init__(self, name, age, birth_date, prog_languages):
75+
self.name = name
76+
self.age = age
77+
self.birth_date = birth_date
78+
self.prog_languages = prog_languages
79+
80+
@classmethod
81+
def from_json(cls, json_data):
82+
return cls(json_data['name'], json_data['age'], json_data['birthDate'], json_data['progLanguages'])
83+
84+
@classmethod
85+
def from_xml(cls, xml_data):
86+
name = xml_data.find('name').text
87+
age = int(xml_data.find('age').text)
88+
birth_date = xml_data.find('birthDate').text
89+
prog_languages = [lang.text for lang in xml_data.find('progLanguages')]
90+
return cls(name, age, birth_date, prog_languages)
91+
92+
def display(self):
93+
print(f'Name: {self.name}')
94+
print(f'Age: {self.age}')
95+
print(f'Birth Date: {self.birth_date}')
96+
print('Programming Languages:')
97+
for lang in self.prog_languages:
98+
print(f'\t- {lang}')
99+
100+
file_name = "user"
101+
102+
with open(f'{file_name}.json', 'w', encoding='utf-8') as json_file:
103+
json.dump(user_data, json_file, indent=2, ensure_ascii=False)
104+
105+
with open(f'{file_name}.json', 'r', encoding='utf-8') as json_file:
106+
json_data = json.load(json_file)
107+
user_from_json = UserData.from_json(json_data)
108+
print('\nData from JSON:')
109+
user_from_json.display()
110+
111+
tree.write(f'{file_name}.xml', "utf-8", True)
112+
113+
xml_data = ET.parse(f'{file_name}.xml').getroot()
114+
user_from_xml = UserData.from_xml(xml_data)
115+
print('\nData from XML:')
116+
user_from_xml.display()
117+
118+
os.remove(f'{file_name}.json')
119+
os.remove(f'{file_name}.xml')

0 commit comments

Comments
 (0)