У меня есть файл XMLИтеративно разбора большого файла XML без использования DOM подход
<temp>
<email id="1" Body="abc"/>
<email id="2" Body="fre"/>
.
.
<email id="998349883487454359203" Body="hi"/>
</temp>
Я хочу, чтобы прочитать файл XML для каждого адреса электронной метки. То есть, в то же время я хочу прочитать электронное письмо id = 1..extract body из него, прочитанный email id = 2 ... и извлечь из него тело ... и т. Д.
Я попытался сделать это используя модель DOM для синтаксического анализа XML, так как размер моего файла равен 100 ГБ. Подход не работает. Затем я попытался с помощью:
from xml.etree import ElementTree as ET
tree=ET.parse('myfile.xml')
root=ET.parse('myfile.xml').getroot()
for i in root.findall('email/'):
print i.get('Body')
Теперь, как только я получаю root..I я не получаю, почему мой код не смог разобрать.
код при использовании iterparse бросает следующее сообщение об ошибке:
"UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 437: ordinal not in range(128)"
Может кто-нибудь помочь
Вы пробовали синтаксический анализ SAX? – Marcin
Я пробовал, но, учитывая размер моего файла, мне предложили использовать 'lxml', также я не получаю точно, как использовать iterparse. Кроме того, спасибо тонну за ответ. :) –
Вы пробовали 'xml.etree.ElementTree.iterparse()'? – Dikei