元素树&x27;Python2.6中的s iter()等价物

元素树&x27;Python2.6中的s iter()等价物,python,xml,python-2.6,elementtree,Python,Xml,Python 2.6,Elementtree,我用ElementTree编写了这段代码,它可以很好地与Python 2.7配合使用。 我需要在“X/Y”节点下获取所有名为“A”的节点 然而,当我试图用Python2.6运行它时,我得到了这个错误 ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute nodes = list(startNode.iter(nodeName)) AttributeError: _ElementInterface instan

我用ElementTree编写了这段代码,它可以很好地与Python 2.7配合使用。 我需要在“X/Y”节点下获取所有名为“A”的节点

然而,当我试图用Python2.6运行它时,我得到了这个错误

ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute
    nodes = list(startNode.iter(nodeName))
AttributeError: _ElementInterface instance has no attribute 'iter'
看起来Python 2.6 ElementTree的节点没有iter()。
如何用Python 2.6实现iter()

注意,
iter
在Python2.6(甚至2.5-否则,在中会有一个通知)中可用,因此您不需要更换

但是,您可以使用:


不确定这是否是您想要的,因为
iter()
似乎出现在2.6中,但是有
getiterator()


很好用,谢谢。用findall代替iter可以吗?当我们有finadll()时引入iter()的原因是什么?@proseek
findall
iter
更强大,也可能更慢。因此,当您真正需要所有节点时,应该只使用
iter
。在许多情况下,您只需要一组特定的节点,如
/group/product/price
。如果是这种情况,请查看
findall
的文档-它可能会为您节省大量Python代码。那么是什么原因导致了错误?我也有同样的问题:root.iter在2.7中工作,在2.6中引发了上述错误。findall修复了它。我在Python2.6中没有看到任何iter(),当我想要获取元素的纯文本时,我遇到了与OP类似的问题。我设法把它放在一起,所以我会把它留在这里,以防有人需要它
remove tags=lambda text:“.join([i.text for i in xml.etree.ElementTree.fromstring(text).findall(“./*”)))
这就是我要找的。谢谢你提供的信息。因此,为了保持Python 2.6的兼容性,我必须显式地切换到不推荐使用的getiterator()。这有点让我想,“那么,为什么他们一开始就反对旧的函数名呢?”。
ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute
    nodes = list(startNode.iter(nodeName))
AttributeError: _ElementInterface instance has no attribute 'iter'
def _iter_python26(node):
  return [node] + node.findall('.//*')