use strict; use warnings; use XML::LibXML; use XML::LibXML::Iterator; my $parser = XML::LibXML->new(); my $dom = $parser->load_xml(location => 'input.xml'); my %newtypes = ( courbe => 'conifere', droite => 'resineux' ); my $iter = XML::LibXML::Iterator->new( $dom->documentElement ); while ( $iter->nextNode() ) { my $node = $iter->current(); next unless $node->nodeName eq 'branche'; $node->setAttribute( 'type', $newtypes{$node->getAttribute('name')} ); } print $dom->toString; exit 0;