Мне нужно проанализировать файл XML объемом 1 Гб со структурой, подобной приведенной ниже, и извлечь текст в тегах "Автор" и "Content":
<Database>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
[...]
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
</Database>
До сих пор я пробовал две вещи: i) чтение всего файла и просмотр его с помощью .find(xmltag) и ii) разбор xml-файла с помощью lxml и iterparse(). Первый вариант у меня работает, но очень медленно. Второй вариант мне так и не удалось сдвинуть с мертвой точки.
Вот часть того, что у меня есть:
for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
if element.tag == "BlogPost":
print element.text
else:
print 'Finished'
Результатом этого являются только пустые места без текста в них.
Должно быть, я делаю что-то не так, но я не могу этого понять. Кроме того, если это было недостаточно очевидно, я новичок в python и впервые использую lxml. Пожалуйста помоги!