我有應該從 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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/396515.html
上一篇:生成器物件阻止串列理解
