If there was just one DATASOURCE tag with a specific name you could use code like this:
If there are more it's a bit more complicated as there is no builtin rule you could use and it's harder to get at the values you want:use strict; use warnings; no warnings 'uninitialized'; use XML::Rules; my $parser = XML::Rules->new( stripspaces => 7, rules => { _default => 'content', DATASOURCE => 'by NAME', NAGIOS => 'pass no content', }, ); my $data = $parser->parse($file); #use Data::Dumper; #print Dumper($data); print $data->{cur}{ACT};
Of course if you do know you will not need the other data in the file you can ignore it and simplify the datastructure:my $parser = XML::Rules->new( stripspaces => 7, rules => { _default => 'content', DATASOURCE => sub { my ($tag,$attrs) = @_; return '@'.$attrs->{NAME} => $attrs; }, NAGIOS => 'pass no content', }, ); my $data = $parser->parse($file); #use Data::Dumper; #print Dumper($data); foreach my $datasource (@{$data->{cur}}) { print $datasource->{ACT}, "\n"; }
my $parser = XML::Rules->new( stripspaces => 7, rules => { _default => '', 'NAME,ACT' => 'content', DATASOURCE => sub { my ($tag,$attrs) = @_; return '@'.$attrs->{NAME} => $attrs->{ACT}; }, NAGIOS => 'pass no content', }, ); my $data = $parser->parse($file); #use Data::Dumper; #print Dumper($data); print join( ", ", @{$data->{cur}}), "\n";
HTH, Jenda
Enoch was right!
Enjoy the last years of Rome.
In reply to Re: Strange Behavior with XML::Simple when pulling info out of an XML file
by Jenda
in thread Strange Behavior with XML::Simple when pulling info out of an XML file
by lunchlady55
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |