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 @articles = $treeobjekt->findnodes('//article'); for(my $j=0;$j<@articles;$j++) { my $unitname = $articles[$j]->parentNode->parentNode->findvalue('./Name/text()'); my $article = $articles[$j]->findvalue('./art_code/text()'); my $amount = $articles[$j]->findvalue('./quantity/text()')//"0"; print "$unitname;$article;$amount\n"; } #### Entity A;A3236;554 Entity A;B9735;386 Entity A;C1299;322 Entity A;D1918; Entity A;E0702; Entity A;F1290; Entity B;A1136;1982 Entity B;B0765;988 Entity B;C8099;522 Entity B;D3938; Entity B;E5722; Entity B;F3596; #### findvalue('./quantity/text()')//"0";