123.1106
124.1306
124.1500
####
use strict;
use warnings;
use XML::LibXML;
my $file = 'n4000-small.xml';
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($file);
# THIS WORKS - but it's finding the vm node not the matrix node
foreach my $vm ($doc->findnodes('//vm[@type=\'br\']')) {
print "br ", $vm->findvalue("./release/\@version"), "\n";
if ( '7.2.1' eq $vm->findvalue("./release/\@version")) {
print "found 7.2.2\n"
}
}
# this also works, finding the "br" vm with the right version, but I think I need the matrix, to identify the "sns" vm
my @wanted_vm = ($doc->findnodes('//vm[@type=\'br\' and ./release/@version=\'7.2.1\']'));
if( @wanted_vm ) {
print "found br ", $wanted_vm[0]->findvalue('./release/@version'), "\n";
}
# this gets the 'br' matrices, but why doesn't it get the vm attributes?
foreach my $matrix ($doc->findnodes( '//matrix/vm[@type=\'br\']' )) {
if( $matrix ) {
#print "matrix:", $matrix->toString(), "\n";
print "vm release version:", $matrix->findvalue('./vm/release/@version'), "\n";
my $vm_type = $matrix->findvalue('./vm/@type');
print "vm type:'" . $vm_type . "'" . "\n";
}
}