Méthode efficace pour parcourir les éléments xml

j'ai un xml comme ceci:

<a>
    <b>hello</b>
    <b>world</b>
</a>
<x>
    <y></y>
</x>
<a>
    <b>first</b>
    <b>second</b>
    <b>third</b>
</a>

J'ai besoin de parcourir tous les <a> et <b> des balises, mais je ne sais pas combien d'entre eux sont dans le document. J'ai donc utiliser xpath de poignée:

from lxml import etree

doc = etree.fromstring(xml)

atags = doc.xpath('//a')
for a in atags:
    btags = a.xpath('b')
    for b in btags:
            print b

Il fonctionne, mais j'ai assez de gros fichiers, et cProfile me montre que xpath est très coûteux à utiliser.

Je me demande, peut-être n'est-il plus efficace de chemin à parcourir indéfiniment nombre de xml-éléments?

source d'informationauteur nukl