我尝试解析XML文件。 主要目标是使用其他特定父标记获取特定标记。 我必须使用现有的文件,我必须修改它。
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
代码应该执行以下操作(子变量基本上应该与父项相同):
我得到父标记是应该返回的标记的名称。 然后我检查我是否是第一次递归,否则我不会在最后返回数据包列表。
对于每个孩子,我尝试将其名称附加到我的自己的父母列表中。然后我检查我的数据包是否有正确的名称"如果是的话我会看看"父母"是自我。 所以现在出现了问题。
如果父母在列表中,我必须删除列表中的所有内容。但这不会奏效。
列表不会被清除。因此,如果标签的下一个出现名称为" name",即使它不应该再次附加,也会再次附加,因为父母不应该再次出现在列表中
有人可以告诉我为什么吗?
答案 0 :(得分:0)
我发现了自己的错误。
要清除列表,我必须致电del parents[:]
parents=[]
不起作用(接缝它什么都不做)。