Python2.6中ElementTree的iter()等效方法
我有一段使用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('.//*')