@@ -167,11 +167,14 @@ def from_bson(cls, bson_str: str) -> "Base":
167
167
@classmethod
168
168
def from_xml (cls , xml_str : str ) -> "Base" :
169
169
"""Instantiate a Base object from an XML string"""
170
- from modelspec .utils import element_to_dict
170
+ from modelspec .utils import element_to_dict , handle_id , convert_values
171
171
172
172
root = ET .fromstring (xml_str )
173
- data_dict = {root .tag : element_to_dict (root )}
174
- return cls .from_dict (data_dict )
173
+ data_dict = element_to_dict (root )
174
+ removed_id = handle_id (data_dict )
175
+ converted_to_actual_val = convert_values (removed_id )
176
+
177
+ return cls .from_dict (converted_to_actual_val )
175
178
176
179
def to_json_file (
177
180
self , filename : Optional [str ] = None , include_metadata : bool = True
@@ -273,13 +276,8 @@ def to_xml_file(
273
276
if filename is None :
274
277
filename = f"{ self .id } .xml"
275
278
276
- # root = ET.Element(root_name)
277
-
278
279
root = build_xml_element (self )
279
280
280
- # Create an ElementTree object with the root element
281
- # tree = ET.ElementTree(root)
282
-
283
281
# Generate the XML string
284
282
xml_str = ET .tostring (root , encoding = "utf-8" , method = "xml" ).decode ("utf-8" )
285
283
@@ -377,14 +375,16 @@ def from_xml_file(cls, filename: str) -> "Base":
377
375
Returns:
378
376
A modelspec Base for this XML.
379
377
"""
380
- from modelspec .utils import element_to_dict
378
+ from modelspec .utils import element_to_dict , handle_id , convert_values
381
379
382
380
with open (filename ) as infile :
383
381
tree = ET .parse (filename )
384
382
root = tree .getroot ()
385
383
386
- data_dict = {root .tag : element_to_dict (root )}
387
- return cls .from_dict (data_dict )
384
+ data_dict = element_to_dict (root )
385
+ removed_id = handle_id (data_dict )
386
+ converted_to_actual_val = convert_values (removed_id )
387
+ return cls .from_dict (converted_to_actual_val )
388
388
389
389
def get_child (self , id : str , type_ : str ) -> Any :
390
390
"""
0 commit comments