拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 PythonXML-遍历元素,如果满足属性条件,则将该元素及其所有子元素添加到串列中

PythonXML-遍历元素,如果满足属性条件,则将该元素及其所有子元素添加到串列中

白鹭 - 2022-03-24 2136 0 0

我有应该从 XML 档案中过滤掉一些元素的脚本。我这样做是因为我确切地知道什么是元素深度,有多少个孩子......但是你能举一个例子来说明如何在不知道嵌套深度的情况下做到这一点吗?

代码如下所示:

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)

欢迎所有建议..

uj5u.com热心网友回复:

我知道您想放入 属性等于某个字符串corresponding_listfolder元素的所有后代元素name

那么一个很好的解决方案是使用递回函式。(一般来说,递回是处理树、图等资料结构的好方法。)

递回函式add_sub_tree将 和 附加elementcorresponding_list,然后在其所有子项上递回呼叫自身。子项也将被附加到,corresponding_list并且该函式将递回呼叫自身以附加所有孙子等。

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)
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *