#!/usr/bin/perl use warnings; use strict; use XML::LibXML; my @xml_files = File::Find::Rule->file->maxdepth(1)->name('*dtc.xml')->in( "c:/file/save"); my $bigXML = XML::LibXML::Document->new( '1.0', 'UTF-8'); my $aggregated; for my $xml_file ( @xml_files ) { my $doc = XML::LibXML->new->parse_file( $xml_file ); my ( $specNode ) = $doc->findnodes( '//Specification' ); if ( $aggregated ) { $aggregated = $specNode; } else { my @details = $specNode->findnodes( './Definition' ); $aggregated->addChild( $_ ) foreach @details; } } $bigXML->adoptNode( $aggregated ); $bigXML->toFile( 'aggregated_data.xml' );