/[cvs]/nfo/perl/libs/Data/Rap/Metadata.pm
ViewVC logotype

Annotation of /nfo/perl/libs/Data/Rap/Metadata.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Tue Feb 18 15:35:49 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
+ initial commit

1 joko 1.1 ## ----------------------------------------------------------------------
2     ## $Id: Ref.pm,v 1.1 2003/01/22 17:59:22 root Exp $
3     ## ----------------------------------------------------------------------
4     ## $Log: Ref.pm,v $
5     ## ----------------------------------------------------------------------
6    
7    
8     package Data::Rap::Metadata;
9    
10     use strict;
11     use warnings;
12    
13    
14     use Data::Dumper;
15     use XML::Parser;
16     use XML::Parser::EasyTree;
17     use XML::XPath;
18     #$XML::Parser::Easytree::Noempty=0;
19     #use XML::Simple;
20    
21    
22     sub getTargetMetadata {
23     my $self = shift;
24     my $target = shift;
25     #my $result = $self->queryXml("*/target[\@name=\"$target\"]", keyattr => [qw( name )], forcearray => 1);
26     my $keyattr = {
27     topic => 'name',
28     taskdef => 'name',
29     target => 'name',
30     };
31     #my $result = $self->queryXml("*/target[\@name=\"$target\"]", keyattr => $keyattr, forcearray => 1);
32     $self->queryXml("*/target[\@name=\"$target\"]");
33     #return $self->_queryXml($self->{filename}, "target");
34     #print Dumper($result);
35     #return $result->{target};
36     #return $result->{target}->{$target};
37     #return $result;
38     $self->xml2easytree();
39     return $self->{payload};
40     }
41    
42     sub readXmlOverview {
43     my $self = shift;
44    
45     $self->log( "Reading Job Database from XML.", 'notice' );
46    
47     #$self->{payload} = XMLin($self->{filename});
48     #my $result = $self->queryXml("*/target", forcearray => 1);
49     #my $result = $self->queryXml("*/target", keyattr =>[]);
50     $self->queryXml("*/target", keyattr => [qw( name )] );
51     $self->xml2simplehash();
52     #return $result;
53    
54     }
55    
56     sub queryXml {
57     my $self = shift;
58     my $xpq = shift;
59     my $options = shift;
60    
61     $self->log( "_queryXml( xpq='$xpq' ) ", 'info' );
62    
63     my $file = $self->{filename};
64    
65     if (! -e $file) {
66     $self->log("file not found: '$file'", 'error');
67     return;
68     }
69    
70     #print "file: $file", "\n";
71     #print "xpq: $xpq", "\n";
72    
73     # filter nodes by xpath-query
74     my $xp = XML::XPath->new( filename => $file );
75     my $nodeset = $xp->find($xpq);
76    
77     # build result xml
78     my $buffer;
79     foreach my $node ($nodeset->get_nodelist) {
80     $buffer .= XML::XPath::XMLParser::as_string($node) . "\n\n";
81     }
82     #$buffer .= '';
83     #$buffer = "<result>$buffer</result>";
84    
85     # trace
86     #print $buffer, "\n";
87    
88     $self->{buffer} = $buffer;
89    
90     }
91    
92    
93     sub xml2easytree {
94     my $self = shift;
95     # convert xml data to native perl data structure
96     my $parser = XML::Parser->new( Style => 'EasyTree', Handlers => { Char => sub {} } );
97     my $data = $parser->parse($self->{buffer});
98    
99     my $hash = $data->[0];
100    
101     # trace
102     #print Dumper($hash);
103     #exit;
104    
105     $self->{payload} = $hash;
106     }
107    
108     sub xml2simplehash {
109     my $self = shift;
110     $self->{payload} = XMLin($self->{buffer});
111     }
112    
113     1;
114     __END__

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed