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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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