ElementTree在Python2.6中的iter()等价物

pro*_*eek 15 python xml elementtree python-2.6

我有这个代码与ElementTree适用于Python 2.7.我需要在"X/Y"节点下获取名为"A"的所有节点.

from xml.etree.ElementTree import ElementTree

verboseNode = topNode.find("X/Y")
nodes = list(verboseNode.iter("A"))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用Python 2.6运行它时,我遇到了这个错误.

ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute
    nodes = list(startNode.iter(nodeName))
AttributeError: _ElementInterface instance has no attribute 'iter'
Run Code Online (Sandbox Code Playgroud)

看起来Python 2.6 ElementTree的节点没有iter().如何用Python 2.6实现iter()?

Ada*_*ner 19

不确定这是否是你想要的,iter()似乎在2.6左右,但有getiterator()

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getiterator


phi*_*hag 8

请注意,iter 在Python 2.6提供(甚至2.5 -否则,会是在通知文档),所以你并不真的需要更换.

但是,您可以使用findall:

def _iter_python26(node):
  return [node] + node.findall('.//*')
Run Code Online (Sandbox Code Playgroud)

  • 我没有在python 2.6中看到任何iter()http://docs.python.org/2.6/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getiterator (7认同)
  • 那导致错误的原因是什么?我有同样的问题:root.iter在2.7中工作,在2.6中引发上述错误.找到了它. (2认同)