Aktuell versuche ich größere XML-Dateien zu verarbeiten. Die Dateien bestehen aus einem Rootelement und zig Datensätzen; ich möchte im Prinzip Datensätze, die bestimmte Kriterien erfüllen auslesen und den Rest verwerfen. Dazu verwende ich lxml.etree.iterparse, um die Datensätze nacheinander einzulesen. Passende Datensätze werden in eine gemeinsame Ausgabedatei geschrieben. Anschließend wird jeder Datensatz so gut es geht aus dem Speicher entfernt. Mein Problem ist nun, dass ich zur Zeit überlege, wie ich am geschicktesten an das Root-Element komme, um es am Anfang und am Ende mit in die Datei zu schreiben.
Zwar kann ich iterparse sagen, dass ich jeweils auch über jedes Start-Ereignis iterieren möchte, aber das erscheint mir für ein einziges Element etwas viel Overhead zu sein; man kann den Iterator ja auch nicht im Betrieb umschalten ("ab jetzt nur noch end-tags")...
Ich nehme an, dass das strukturell eine Aufgabenstellung ist, die häufiger vorkommt. Daher wollte ich mal fragen, wie man so etwas generell angehen würde.
Vielen Dank schon mal
