У меня есть XML, как это:Эффективный способ для перебора элементов 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-элементов?
Пожалуйста перевод «довольно большой» в мегабайтах. –