use XML::LibXML 1.93; use XML::LibXML::PrettyPrint qw/print_xml/; use PerlX::MethodCallWithBlock; my $doc = XML::LibXML->load_xml(IO => \*DATA); $doc -> findnodes('//policyrules') -> foreach { my $elem = shift; $elem->parentNode->appendChild($_) foreach $elem->childNodes; $elem->parentNode->removeChild($elem); }; print_xml($doc); #### use XML::LibXML 1.93; use XML::LibXML::PrettyPrint qw/print_xml/; use PerlX::MethodCallWithBlock; XML::LibXML -> load_xml(IO => \*DATA) -> findnodes('//policyrules') -> foreach { my $elem = shift; $elem->parentNode->appendChild($_) foreach $elem->childNodes; $elem->parentNode->removeChild($elem); } -> map { $_->ownerDocument } -> foreach { print_xml $_ and exit };