use XML::Simple;
my $XML_string=<<'XML';
XML
# create object
my $xmlfile = XML::Simple->new(KeyAttr => {result => 'result'} );
my $xml = $xmlfile->XMLin($XML_string);
my $Passed = 0;
my $Warnings = 0;
my $Failed = 0;
print Dump $XML;
foreach my $TCresult (@{$xml->{dut}{tc}}){
print Dump $TCresult;
if ($TCresult->{result} eq 'Passed'){$Passed++;}
if ($TCresult->{result} eq 'Warnings'){$Warnings++;}
if ($TCresult->{result} eq 'Failed'){$Failed++;}
}
print "Passed: $Passed\n";
print "Warnings: $Warnings\n";
print "Failed: $Failed\n";
####
---
dut:
tc:
- id: 001.001
result: Passed
ts: {}
- id: 002.001
result: Failed
ts: {}
- id: 003.001
result: Warnings
ts: {}
####
$VAR1 = [
{
'dut' => {
'tc' => {
'002.001' => {
'ts' => {},
'result' => 'Failed'
},
'001.001' => {
'ts' => {},
'result' => 'Passed'
},
'003.001' => {
'ts' => {},
'result' => 'Warnings'
}
}
}
}
];