ITER () эквивалентный ElementTree в Python2.6 - PullRequest
14 голосов
/ 01 октября 2011

У меня есть этот код с ElementTree, который хорошо работает с Python 2.7.Мне нужно было получить все узлы с именем «A» под узлом «X / Y».

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 ().Как я могу реализовать iter () с Python 2.6?

Ответы [ 2 ]

18 голосов
/ 01 октября 2011

Не уверен, что это то, что вы ищете, так как iter() примерно в 2.6, но есть getiterator()

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

8 голосов
/ 01 октября 2011

Обратите внимание, что iter - это , доступный в Python 2.6 (и даже 2.5 - в противном случае в docs будет уведомление, так что вам не нужнозамена.

Однако вы можете использовать findall:

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