【发布时间】:2018-07-15 21:16:12
【问题描述】:
这是我要解析的 XML 的 sn-p:
<DSMs>
<DSM class="ACE" order="320"/>
<DSM class="ACS" order="1900"/>
<DSM class="Aironet" order="1050"/>
<DSM class="Apache" order="4700"/>
<DSM class="AppSecDbProtect" order="1477"/>
<DSM class="ArborNetworksPravail" order="1554">
<Thresholds>
<Threshold name="MinNumEvents" value="5"/>
<Threshold name="AbandonAfterSuccessiveFailures" value="3"/>
</Thresholds>
<Templates>
<Template name="DeviceName" value="Arbor Networks Pravail @ $$SOURCE_ADDRESS$$"/>
</Templates>
</DSM>
<DSM class="ARN" order="2000"/>
<DSM class="ArpeggioSIFTIT" order="1553"/>
<DSM class="ArubaClearPass" order="545">
<Thresholds>
<Threshold name="MinNumEvents" value="5"/>
<Threshold name="AbandonAfterSuccessiveFailures" value="3"/>
</Thresholds>
<Templates>
<Template name="DeviceName" value="Aruba ClearPass Policy Manager @ $$SOURCE_ADDRESS$$"/>
<Template name="DeviceDescription" value="Aruba ClearPass Policy Manager Device"/>
</Templates>
</DSM>
</DSMs>
到目前为止我做了什么(部分代码):
ta_dsms = []
for level1 in root:
if level1.tag == 'DSMs':
for level2 in level1:
ta_dsm = level2.attrib
ta_dsms.append(ta_dsm)
print ta_dsms
ta_dsms的当前输出是这样的:
[{'class': 'ACE', 'order': '320'},
{'class': 'ACS', 'order': '1900'},
...]
我的问题是获取阈值和模板信息并将它们添加到我的数组中的优雅方法是什么。只有一些 DSM 有孩子。我整天都被困在这上面。谢谢你救了我的命!
【问题讨论】:
-
我刚刚更新了我的答案。据我了解,我们应该在每个
DSM中列出Thresholds和Templates,对吗? -
@briancaffey 在这种情况下,只有 ArborNetworksPravail 和 ArubaClearPass 具有阈值和模板。谢谢。
-
问题是为什么您要尝试将 XML 转换为嵌套列表? XML 已经是一个很好的嵌套数据结构,没有必要将它转换为列表来使用它。
标签: python xml elementtree xml.etree