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 ('\n Data 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 ('\n Data 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