Ich muss eine sehr große (~ 40 GB) XML-Datei analysieren, bestimmte Elemente daraus entfernen und das Ergebnis in eine neue XML-Datei schreiben. Ich habe versucht, iterparse aus Pythons ElementTree zu verwenden, aber ich bin verwirrt darüber, wie man den Baum ändert und dann den resultierenden Baum in eine neue XML-Datei schreibt. Ich habe die Dokumentation auf Itertree gelesen, aber es hat die Dinge nicht geklärt. Gibt es dafür einfache Möglichkeiten?
Danke!
EDIT: Das habe ich bis jetzt.
%Vor% Wenn Sie ein großes xml haben, das nicht in den Speicher passt, könnten Sie versuchen, es einzeln zu serialisieren. Angenommen, <root><page/><page/><page/>...</root>
Dokumentstruktur und Ignorieren möglicher Namespace-Probleme:
Dabei gibt keep(page)
True
zurück, wenn page
beibehalten werden soll, z. B.:
Zum Vergleich: Um eine kleine XML-Datei zu ändern, könnten Sie:
%Vor%Vielleicht die Antwort auf meine ähnliche Frage kann Ihnen helfen.
Was das Zurückschreiben in eine .xml-Datei angeht, habe ich das am Ende meines Skripts gemacht:
%Vor% Die Variable doc
stammt von meinem Skript, was vergleichbar ist mit tree = ET.iterparse("sample.xml")
Ich habe folgendes:
Ich habe lxml anstelle von ElementTree verwendet, aber ich denke, dass der Write-out-Teil noch funktionieren sollte (ich denke, dass es hauptsächlich nur Xpath-Sachen sind, die ElementTree nicht verarbeiten kann.) Ich verwende lxml, importiert mit dieser Zeile:
%Vor%Hoffentlich kann dies (zusammen mit meiner verknüpften Frage für einen zusätzlichen Code-Kontext, wenn Sie es brauchen) Ihnen helfen!
Tags und Links python xml elementtree