优化两个节点之间的getPath Etree Python

时间:2017-05-22 08:20:39

标签: python xml recursion elementtree

我编写了一个小函数来在python中的XML树中的两个节点之间获取路径,如下所示:

def getPath(node, target):
    if node == target:
        if node.get('mnemo'):
            return node.tag + ":" + node.get('mnemo')
        elif node.get('repere'):
            return node.tag + ":" + node.get('repere')
        else:
            return node.tag

    for i in node.getchildren():
        tail = getPath(i, target)
        if tail:
            if node.get('mnemo'):
                return node.tag + ":" + node.get('mnemo') + "/" + tail
            elif node.get('repere'):
                return node.tag + ":" + node.get('repere') + "/" + tail
            else:
                return node.tag + "/" + tail  # prepend node to path back from target
    return None

我的问题是我的执行时间增加了近十倍。当然,这是正常的,这是一个递归函数,我的树来自200K行的XML。我不知道如何减少脚本的执行时间。

谢谢

0 个答案:

没有答案