У меня есть документ xmi от Enterprise Architect, похожий на этот
<?xml version="1.0" encoding="windows-1252"?>
<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
<xmi:Documentation exporter="Enterprise Architect" exporterVersion="6.5"/>
<uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
<packagedElement xmi:type="uml:Package" xmi:id="EAPK_C1A0B65B_00C2_4229_B332_B884E85F45E6" name="Starter Activity Diagram">
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_3DE279FE_1113_4dc6_B5A1_440947952118" name="Step 1"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_5C10AB4B_9858_4c7a_9435_541ACEF8AD0D" name="Step 2"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_130C1669_673C_4c2f_A113_7EC22D2BE1C9" name="Step 3">
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_58A61F14_EAED_44ed_8F03_CEE99A9B7B66" name="Step 3.1">
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_DC23911F_5A80_4d9d_B5D7_0BEF15DF987E" name="Step 3.1.1"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_0E45CD9C_0F9A_4b55_A4CC_268C0D254C38" name="Step 3.1.2">
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_F8D94AE5_10C5_4d71_B743_53E496052BEA" name="Step 3.1.2.1"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_CBC98C2D_E49C_43a1_B7B4_90768ADEC4D3" name="Step 3.1.2.2"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_E94810F8_3390_463c_B1B2_FECC0993CEFD" name="Step 3.1.2.3"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_03996F4A_3727_4c45_91A4_B2B8E768AA30" name="Step 3.2"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_A78976E8_828D_4db7_98E2_20A44C9C982E" name="Step 3.3"/>
</packagedElement>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_F4B7134E_60C6_49e1_865D_0DF55B1B5562" name="Step 4"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_BCAD3CA3_DE1C_466d_8B6C_31A0A8237E9A" name="Step 5"/>
<packagedElement xmi:type="uml:Activity" xmi:id="EAID_AC000001_00C2_4229_B332_B884E85F45E6" name="Step 6">
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="EAID_8C73CF8B_A1ED_4ecf_9430_AEC994775AD1"/>
</packagedElement>
</uml:Model>
</xmi:XMI>
Я хочу создать список таких словарей
data = [
{'entrynumber': 1, 'level': 1, 'name': 'Step 1'},
{'entrynumber': 2, 'level': 1, 'name': 'Step 2'},
{'entrynumber': 3, 'level': 1, 'name': 'Step 3'},
{'entrynumber': 4, 'level': 2, 'name': 'Step 3.1'},
{'entrynumber': 5, 'level': 3, 'name': 'Step 3.1.1'},
{'entrynumber': 6, 'level': 3, 'name': 'Step 3.1.2'},
{'entrynumber': 7, 'level': 4, 'name': 'Step 3.1.2.1'},
{'entrynumber': 8, 'level': 4, 'name': 'Step 3.1.2.2'},
{'entrynumber': 9, 'level': 4, 'name': 'Step 3.1.2.3'},
{'entrynumber': 10, 'level': 2, 'name': 'Step 3.2'},
{'entrynumber': 11, 'level': 2, 'name': 'Step 3.3'},
{'entrynumber': 12, 'level': 1, 'name': 'Step 4'},
{'entrynumber': 13, 'level': 1, 'name': 'Step 5'},
{'entrynumber': 14, 'level': 1, 'name': 'Step 6'}]
Я знаю, как проанализировать xmi с помощью python с использованием xmldom.minidom. Моя основа - эти строки кода
def getName(xmldoc):
data = []
for element in xmldoc.getElementsByTagName("packagedElement"):
new = element.getAttribute('name')
data.append(new)
return data
Но моя проблема в том, что я не знаю, как мне сохранить иерархию в документе. Насколько я знаю, функция getElementsByTagName просто дает вам все имена элементов, не заботясь об уровнях.