У меня есть xml:
<a>
<b>hello</b>
<b>world</b>
</a>
<x>
<y></y>
</x>
<a>
<b>first</b>
<b>second</b>
<b>third</b>
</a>
Мне нужно повторить все теги <a>
и <b>
, но я не знаю, сколько из них находится в документе. Поэтому я использую xpath
для обработки этого:
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
Это работает, но у меня довольно большие файлы, а cProfile
показывает мне, что xpath
очень дорого используется.
Интересно, может быть, есть более эффективный способ перебора бесконечного числа xml-элементов?