como iterar recursivamente sobre tags XML em Python usando ElementTree?

Eu estou tentando iterar sobre todos os nós em uma árvore usando ElementTree.

Eu faço algo como:

  tree = ET.parse("/tmp/test.xml")

  root = tree.getroot()

  for child in root:
       ### do something with child

O problema é que filho é um objeto Element e não um elemento ElementTree, então não posso mais investigá-lo e recorrer à iteração sobre seus elementos. Existe uma maneira de iterar de maneira diferente sobre "raiz", de forma que itere sobre os nós de nível superior na árvore (filhos imediatos) e retorne a mesma classe que a própria raiz?

questionAnswers(3)

yourAnswerToTheQuestion