@@ -224,7 +224,8 @@ def get_anwendungsfaelle(self) -> list[Anwendungsfall]:
224
224
def _iter_segments_and_segment_groups (self , element : ET .Element ) -> list [SegmentGroup | Segment ]:
225
225
"""recursive function that builds a list of all segments and segment groups"""
226
226
result : list [Segment | SegmentGroup ] = []
227
- if _is_anwendungsfall (element ) or _is_format (element ) or _is_uebertragungsdatei (element ):
227
+ should_go_deeper = _is_anwendungsfall (element ) or _is_format (element ) or _is_uebertragungsdatei (element )
228
+ if should_go_deeper :
228
229
for sub_element in element :
229
230
result .extend (self ._iter_segments_and_segment_groups (sub_element ))
230
231
if _is_segment_group (element ):
@@ -235,14 +236,16 @@ def _iter_segments_and_segment_groups(self, element: ET.Element) -> list[Segment
235
236
236
237
def _read_anwendungsfall (self , original_element : ET .Element ) -> Anwendungsfall :
237
238
segments_and_groups = []
238
- root = self ._element_tree .getroot ()
239
- for element in root :
239
+ for element in original_element :
240
240
segments_and_groups .extend (self ._iter_segments_and_segment_groups (element ))
241
+ format_element = original_element [0 ]
242
+ if _is_uebertragungsdatei (format_element ):
243
+ format_element = original_element [0 ][0 ]
241
244
return Anwendungsfall (
242
245
pruefidentifikator = original_element .attrib ["Pruefidentifikator" ],
243
246
beschreibung = original_element .attrib ["Beschreibung" ],
244
247
kommunikation_von = original_element .attrib ["Kommunikation_von" ],
245
- format = original_element [ 0 ] .tag .lstrip ("M_" ),
248
+ format = format_element .tag .lstrip ("M_" ),
246
249
segments = [s for s in segments_and_groups if isinstance (s , Segment )],
247
250
segment_groups = [s for s in segments_and_groups if isinstance (s , SegmentGroup )],
248
251
)
0 commit comments