in reply to Re^3: Is it possible to parse an XML file recursively using XML::Twig?
in thread Is it possible to parse an XML file recursively using XML::Twig?
The following more cautious code seemed to work for me and should purge memory regularly. I worry that calling purge on every element which might purge something you still need around.
use strict; use warnings; use XML::Twig; $|++; my $twig = XML::Twig->new( twig_handlers => { # as noted in the documentation for end_tag_handlers ... # "twig_handlers are called when an element is completely pars +ed" # so should be safe to purge here 'Book' => sub { my ($twig, $el) = @_; # print "purging ...\n"; $twig->purge; }, 'Book//*' => sub { # see http://search.cpan.org/~mirod/XML-Twig-3.49/Twig.pm# +cond # for #ELT which is an element print $_->tag, ': ', $_->text, $/ unless ($_->has_children('#ELT')); } } ); $twig->parsefile('books.xml');
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Is it possible to parse an XML file recursively using XML::Twig?
by Ppeoc (Beadle) on Oct 30, 2015 at 18:40 UTC |