Python2.6中ElementTree的iter()等效方法

16 投票
2 回答
18966 浏览
提问于 2025-04-17 03:27

我有一段使用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 个回答

20

不太确定这是不是你想要的,因为iter()这个东西在2.6版本就已经有了,不过还有一个叫getiterator()的方法。

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

7

请注意,iter 在 Python 2.6 版本中是可以使用的(甚至在 2.5 版本中也可以用——如果不能用的话,文档里会有说明),所以你其实不需要找替代的方法。

不过,你可以使用 findall

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

撰写回答