我正在使用python 3.4,试图在xml文件中找到类似的子树。
这是我的代码:
def find_unique_sub_tree(oneFile, resultPath, list_ignored_att):
root = find_root(oneFile)
idNodes = root.iter('xmlID')
for n1 in idNodes:
id1 = n1.attrib['idName']
for n2 in idNodes:
id2 = n2.attrib['idName']
do something
嵌套for循环的问题在于它只接受外循环中的第一项,当从内循环完成时,它永远不会返回从外循环中获取第二项。我理解这个问题但无法解决。 我试过这些解决方案:
idNodes = root.iter('xmlID')
idNodes2 = root.iter('xmlID')
for n1 in idNodes:
id1 = n1.attrib['idName']
for n2 in idNodes2:
我也尝试过:
root = find_root(oneFile)
root2 = find_root(oneFile)
idNodes = root.iter('xmlID')
idNodes2 = root.iter('xmlID')
for n1 in idNodes:
id1 = n1.attrib['idName']
for n2 in idNodes2:
这些并没有解决问题。
最后,我尝试了一个深层复制,但它给出了错误:
root = find_root(oneFile)
idNodes = root.iter('xmlID')
idNodes2 = copy.deepcopy(idNodes)
for n1 in idNodes:
id1 = n1.attrib['idName']
for n2 in idNodes2:
所以我尝试了这个:
idNodes = list(root.iter('xmlID'))
idNodes2 = copy.deepcopy(idNodes)
for n1 in idNodes:
id1 = n1.attrib['idName']
for n2 in idNodes2:
它删除了错误但没有解决问题
有人可以帮忙吗? 感谢
答案 0 :(得分:0)
我不确定我是否完全理解这个问题,但你可能最好制作一个所有子节点的列表,并使用不同的函数来比较列表中的每个元素,使用任何所需的标准:
node_list = list()
for n1 in idNodes:
node_list.append(n1.attrib['idName'])
x = 1
for idName in node_list:
for idName2 in node_list[x:]
result = compare_nodes(idName, idName2)
x += 1