Python XML - 遍历元素,如果满足属性条件,将该元素及其所有 children 追加到列表中

Python XML - Iterate through elements, and if attribute condition is met, append that element with all its children to the list

我有脚本应该从 XML 文件中过滤掉一些元素。我这样做是因为我完全知道什么是元素的深度,有多少 children ... 但是你能给我一个例子,说明如何在不知道嵌套深度的情况下做到这一点吗?

代码如下所示:

def Filter_Modules(folder_name, corresponding_list):
    for element in delta_root.iter('folder'):
      if element.attrib.get('name') == str(folder_name):
        corresponding_list.append(element)
        for child in element:
          corresponding_list.append(child)
          for ch in child:
            corresponding_list.append(ch)
            for c in ch:
              corresponding_list.append(c)

欢迎所有建议..

我知道你想输入 corresponding_list 全部 folder 元素的后代元素,其中 name 属性等于某个字符串。

那么一个好的解决方案是使用 递归 函数。 (在 一般来说,递归是处理数据结构的好方法,例如 树、图表、...)。

递归函数add_sub_tree将andelement附加到 corresponding_list 然后递归调用自身 children。 Children 也将附加到 corresponding_list 和 该函数将递归调用自身以追加所有 grand-children 等等。

def Filter_Modules(folder_name, corresponding_list):
    def add_sub_tree(element):
        corresponding_list.append(element)
        for child in element:
            add_sub_tree(child)
        
    for element in delta_root.iter('folder'):
        if element.attrib.get('name') == str(folder_name):
            add_sub_tree(element)