package SSEParser;
use Moo;
use Data::Dumper;
extends 'XML::LibXML';
sub load_sse_file {
my ($self, $filename) = @_;
die "File not found <$filename>\n" unless -f $filename;
die "Not SSE file <$filename>\n" unless $filename =~ /_subeditor\.xml$/i;
my $doc = $self->parse_file($filename);
print '='x75, "\n";
print Dumper($doc);
print '='x75, "\n";
bless $doc, 'SSEDocument';
return $doc;
}
1;
####
package SSEDocument;
use Moo;
extends 'XML::LibXML::Document';
sub find_buses {
my ($self) = @_;
return $self->findnodes("//DNOM/Substation/Bus");
}
1;
####
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use SSEParser;
my $inst = SSEParser->new();
print Dumper($inst);
my $sse_doc = $inst->load_sse_file("test_subeditor.xml");
print Dumper($sse_doc);
my @buses = $sse_doc->find_buses();
####
$VAR1 = bless( {
'_State_' => 0,
'XML_LIBXML_PARSER_OPTIONS' => 4102
}, 'SSEParser' );
===========================================================================
$VAR1 = bless( do{\(my $o = 68387856)}, 'XML::LibXML::Document' );
===========================================================================
$VAR1 = bless( do{\(my $o = 68387856)}, 'SSEDocument' );
Can't locate object method "find_buses" via package "SSEDocument" at C:\usr\scripts\SSE\sseparser\pm\testmyclass.pl line 12.