Die Verarbeitung großer XML-Dateien, die nicht in den Speicher passen, ist XML::Twig
bewirbt :
Eine der Stärken von
XML::Twig
ist, dass Sie mit Dateien arbeiten können die nicht in den Speicher passen (BTW speichert ein XML - Dokument im Speicher als Baum ist ziemlich speicher teuer, der Expansionsfaktor ist oft um 10).Um dies zu tun, können Sie Handler definieren, die einmal aufgerufen werden spezifisches Element wurde vollständig analysiert. In diesen Handlern können Sie Greife auf das Element zu und bearbeite es so, wie es dir passt (...)
Der Code, der in der Frage gepostet wird, nutzt die Stärke von XML::Twig
überhaupt nicht (die Methode simplify
macht es nicht viel besser als XML::Simple
).
Was im Code fehlt, sind die " twig_handlers
" oder " twig_roots
", die den Parser im Wesentlichen veranlassen, sich effizient auf relevante Teile des XML-Dokuments zu konzentrieren.
Es ist schwierig zu sagen, ohne das XML zu sehen, ob das Dokument Stück für Stück verarbeitet. Chunk oder nur ausgewählte Teile ist der Weg zu gehen, aber entweder sollte man dieses Problem lösen.
Der Code sollte also etwa so aussehen (Chunk-by-Chunk-Demo):
%Vor%Siehe Abschnitt "XML-Dokumentabschnitt für Abschnitt verarbeiten" von XML::Twig Dokumentation, es wird speziell besprochen, wie das Dokument Teil für Teil verarbeitet wird, was eine große XML-Dateiverarbeitung ermöglicht.