Не используйте SAX, используйте ElementTree вместо:
from xml.etree import cElementTree as ET
for event, elem in ET.iterparse("/path/to/your/file"):
if elem.tag == 'page':
# do your processing
elem.clear()
Важным является вызов elem.clear()
, в противном случае вы сохраните все обработанные элементы в памяти и в конечном итоге также будете использовать всю свою оперативную память. Объекты-элементы - это легкие DOM-подобные объекты, поэтому они довольно просты в использовании по сравнению с SAX.
Если отдельные элементы page
уже слишком велики, чтобы уместиться в вашей памяти, вам придется вернуться к SAX, но я предполагаю, что из вашего примера есть много небольших page
элементов, а не несколько больших.