use XML::Twig qw( ); # Assumptions # - "data" elements can't be nested. # - Only one twig instance is used at a time. my $prune_data; sub twig_data_start { my ($twig, $ele) = @_; $prune_data = 0; return 1; } sub twig_data_type { my ($twig, $ele) = @_; $prune_data = 1 if $ele->trimmed_text() eq 'yyy'; return 1; } sub twig_data { my ($twig, $ele) = @_; return 1 if !$prune_data; $prune_data = 0; $ele->delete(); return 0; } my $twig = XML::Twig->new( start_tag_handlers => { 'data' => \&twig_data_start, }, twig_handlers => { 'data' => \&twig_data, 'data/type' => \&twig_data_type, }, # Output will be nicely formatted, but not necessarily valid. pretty_print => 'indented', ); $twig->parse(\*DATA); $twig->print(); __DATA__ <doc> <data> <type>xxx</type> <vars>a</vars> </data> <data> <type>yyy</type> <vars>b</vars> </data> </doc>
<doc> <data> <type>xxx</type> <vars>a</vars> </data> </doc>
In reply to Re: Ignore elements using twig module
by ikegami
in thread Ignore elements using twig module
by basalto
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |