Некоторые синтаксические анализаторы XML допускают инкрементный синтаксический анализ XML-документов, который является парсером, который может начать работать над документом, не требуя его полной загрузки. XMLTreeBuilder из модуля xml.etree.ElementTree в стандартной библиотеке Python является одним из таких парсеров: Element Tree
Как вы можете видеть в приведенном ниже примере, вы можете каждый раз передавать данные в парсер, когда вы читаете их с вашего ввода источник. Соответствующие методы крюка в вашем классе обработчика будет вызываться, когда различные XML «событие» происходит (метка начала, данные тега читать, тег закончился), что позволяет обрабатывать данные, как загружается документ XML:
from xml.etree.ElementTree import XMLTreeBuilder
class MyHandler(object):
def start(self, tag, attrib):
# Called for each opening tag.
print tag + " started"
def end(self, tag):
# Called for each closing tag.
print tag + " ended"
def data(self, data):
# Called when data is read from a tag
print data + " data read"
def close(self):
# Called when all data has been parsed.
print "All data read"
handler = MyHandler()
parser = XMLTreeBuilder(target=handler)
parser.feed(<sometag>)
parser.feed(<sometag-child-tag>text)
parser.feed(</sometag-child-tag>)
parser.feed(</sometag>)
parser.close()
В этот пример обработчик получит пять событий и печати:
sometag начал
sometag-ребенок начал
"текст" чтения данных
sometag-ребенок закончился
sometag закончился
Все данные чтения