ElementTree iter() эквивалентен в Python2.6
У меня есть этот код с ElementTree, который хорошо работает с Python 2.7.
Мне нужно было получить все узлы с именем "A" под "X/Y" node.
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 node нет iter().
Как я могу реализовать iter() с Python 2.6?
Ответы
Ответ 1
Обратите внимание, что iter
доступен в Python 2.6 (и даже 2.5 - в противном случае в docs будет уведомление.), поэтому вам не нужна замена.
Однако вы можете использовать findall
:
def _iter_python26(node):
return [node] + node.findall('.//*')
Ответ 2
Не уверен, что это то, что вы ищете, поскольку iter()
, похоже, находится в 2.6, но там getiterator()
http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getiterator