如何使用Python在多次迭代中解析和匹配多个XML文件?

时间:2017-01-18 13:53:30

标签: python xml

我有两个XML文件。一个文件包含使用对象而不是IP地址,服务等定义的防火墙规则。第二个文件包含这些对象的定义,IP地址,服务类型等。

我可以使用ElementTree和以下代码循环遍历每个XML文件并将对象与服务定义匹配:

{{1}}

我遇到的问题是policy.xml中使用的一些对象是“service_groups”,其中包含我需要访问的实际服务。在示例中,XML policy.xml包含“icmp-requests”作为服务对象,它是services.xml中的“service_group”。因此,当我真正需要匹配组中的所有服务时,当我执行比赛时,我正在与组进行对比。

我想过只需添加一个代码来检查服务对象是否是一个服务组,然后循环并提取所有服务。我遇到的问题是服务组可以包含其他服务组。嵌套发生的程度确实没有限制。

最后,我需要做的是从policy.xml中提取所有成员,并将其与services.xml的所有单个成员相匹配。

1 个答案:

答案 0 :(得分:0)

我能够通过构建以下功能来解决我的问题:

def resolve_group_members(group_name):
    # Loop through the list of members
    for member in groups[group_name]:
            # If the member is in the groups dict keys
            if member in groups.keys():
                    # recursively loop through the function again passing the member name
                    resolve_group_members(member)
            else:
                    # if the member is not a group now we can do something with it
                    print('\t\tGroup Members: ' +  member)

这样我就可以将所有服务分配给字典,然后解析每个组成员。