Используйте SAX (вместо DOM). Это будет учитывать тот факт, что у вас есть очень большой файл для анализа.
Вам нужно будет реализовать ContentHandler, который будет записывать данные в csv.
См. Пример ниже:
import xml.sax
from xml import sax
class ExampleContentHandler(xml.sax.ContentHandler):
def __init__(self):
xml.sax.ContentHandler.__init__(self)
def startElement(self, name, attrs):
print('start:', name)
def endElement(self, name):
print('end:', name)
def characters(self, content):
print('chars:', content)
def main():
xmlString = "<note>\n<to>Tove</to>\n<from>Jani</from>\n<heading>Reminder</heading>\n<body>Don't forget me this weekend!</body>\n</note>"
sax.parseString(xmlString, ExampleContentHandler())
if __name__ == "__main__":
main()