У меня есть такой xml:
<a>
<b>hello</b>
<b>world</b>
</a>
<x>
<y></y>
</x>
<a>
<b>first</b>
<b>second</b>
<b>third</b>
</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-элементов?