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

时间:2011-09-30 22:45:37

标签: python xml python-2.6 elementtree

我有使用ElementTree的代码,它与Python 2.7兼容。 我需要在“X / Y”节点下获取名为“A”的所有节点。

from xml.etree.ElementTree import ElementTree

verboseNode = topNode.find("X/Y")
nodes = list(verboseNode.iter("A"))

但是,当我尝试使用Python 2.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()?

2 个答案:

答案 0 :(得分:18)

不确定这是否是您要找的内容,因为iter()似乎在2.6左右,但有getiterator()

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

答案 1 :(得分:8)

请注意,{2.6}中提供了iter (甚至是2.5 - 否则,docs会有通知),所以你真的没有需要更换。

但是,您可以使用findall

def _iter_python26(node):
  return [node] + node.findall('.//*')