in reply to xml to xml converter

Although my go-to XML module is XML::LibXML, XML::Twig is useful for filtering XML files. The following produces your expected output for the given input:

use warnings; use strict; use XML::Twig; use XML::XPath; # for findnodes my $filename = 'foo.xml'; XML::Twig->new( twig_print_outside_roots => 1, keep_spaces => 1, twig_roots => { '/TestCode/TestCategory/Test' => sub { my ($t, $elt) = @_; if ( $elt->{att}{name} =~ /^CheckType_/ ) { my @values = $elt->findnodes('./context/value'); # could theoretically also use XPath for the following if ( grep { $_->text =~ /XYZ/ } @values ) { $t->flush } else { $t->purge } } else { $t->purge } }, }, )->parsefile($filename);

Replies are listed 'Best First'.
Re^2: xml to xml converter
by szpt9m (Novice) on Nov 09, 2021 at 14:47 UTC
    Thank you for quick response but i get an error Can't locate XML/Twig.pm in @INC when running this. How can i install in module in Windows?
      Thank you for quick response but i get an error Can't locate XML/Twig.pm in @INC when running this. How can i install in module in Windows?

      The same way you would install any other module. In Strawberry Perl, cpanm XML::Twig XML::XPath works for me.

        This solution worked for me. Though for a bigger data, i could see lot of empty spaces in between but that is ok for me to start with. Thank you very much