1 Entity A Name
SomeStreet 1 00000 Town
0123 456 78910 0123 456 10987
A3236 554
B9735 386
C1299 322
D1918
E0702
F1290
2 Entity B Name
SomeOtherStreet 2 11111 City
0999 456 78910 0999 456 10987
A1136 1982
B0765 988
C8099 522
D3938
E5722
F3596
#### Entity A;A3236;554 Entity A;B9735;386 Entity A;C1299;322 ... Entity B;A1136;1982 etc. #### use strict; use warnings; use XML::LibXML; my $filename = "Test.xml"; my $my_object = XML::LibXML->new(); my $treeobjekt = $my_object->parse_file($filename); my $root = $treeobjekt->getDocumentElement; my @units=$treeobjekt->findnodes("//excerpt/unit"); for(my $i=0;$i<@units;$i++) { my $unitname=$units[$i]->findvalue('./Name/text()'); my $art = $units[$i]->findvalue('./products/article'); my $art_chain = join('---', split(/\n/, $art)); print "$unitname;$art_chain\n"; } #### my $art_chain; if($units[$i]->findvalue('./products/article/quantity')>0) { $art_chain = join('---', split(/\n/, $art)); }