我有应该从 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_list
的folder
元素的所有后代元素name
。
那么一个很好的解决方案是使用递回函式。(一般来说,递回是处理树、图等资料结构的好方法。)
递回函式add_sub_tree
将 和 附加element
到
corresponding_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 评论