-1
我嘗試解析XML文件。 主要目標是使用其他特定父標籤獲取特定標籤。 我必須使用一個已經存在的文件,我必須修改它。Python:通過引用和遞歸調用
def get_item_with_parents(self, parent, name, items=None, parents=None):
self.parents=parents
if items == None:
top_level = 1
items = []
self.parents = []
else:
top_level = 0
for child in self.children:
self._append_list(child.name)
if child.name == name and parent in self.parents:
print "inside if"
self._del_list()
items.append(child)
#print self.parents
child.get_item_with_parents(parent, name, items, self.parents)
if top_level:
return PacketList(items)
def _append_list(self, item):
self.parents.append(item)
def _del_list(self):
self.parents=[]
print "test"
print self.parents
的代碼應做到以下幾點(孩子變量應該基本意味着相同的父的事):
我得到的父標籤應當返還的標籤的名稱。 然後我檢查我是否是第一次遞歸,否則我不會在最後返回數據包列表。
對於每個孩子,我嘗試將其名稱附加到我的self.parents列表中。然後我檢查我的數據包是否有正確的「名稱」,如果是,我會查看「父」是否在self.parent中。 現在就出現這個問題。
如果父母在列表中,我必須刪除列表中的所有內容。但是這不會工作。
列表不會被清除。因此,如果下一次出現名稱爲「名稱」的標籤,即使不應該出現,也會再次追加,因爲父級不應再出現在列表中
有人能告訴我爲什麼嗎?
「但這不行。」 *不*有意義。請澄清你的意思是「不會工作」。它會引發錯誤嗎? (如果是這樣發佈完整的回溯)你會得到一個意想不到的結果嗎? (如果是這樣,發佈結果你[相對投入] *和*預期的結果,你想要的) – Bakuriu 2014-10-22 11:41:13
是的..你是對的。對不起,它什麼都沒做。該列表不會被清除。因此,如果下一次出現名稱爲「名稱」的標籤,即使它不應該再次追加,因爲父級不應再出現在列表中 – Ventu 2014-10-22 11:54:59