/[cvs]/nfo/perl/libs/Data/Storage/Handler/XML.pm
ViewVC logotype

Annotation of /nfo/perl/libs/Data/Storage/Handler/XML.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Thu Feb 20 20:20:54 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
+ initial commit

1 joko 1.1 ## ------------------------------------------------------------------------
2     ## $Id: File.pm,v 1.5 2003/02/18 19:18:50 joko Exp $
3     ## ------------------------------------------------------------------------
4     ## $Log: File.pm,v $
5     ## ------------------------------------------------------------------------
6    
7    
8     package Data::Storage::Handler::XML;
9    
10     use strict;
11     use warnings;
12    
13     use base qw(
14     DesignPattern::Object
15     DesignPattern::Logger
16     );
17    
18    
19     use Data::Dumper;
20     #use Data::Storage::Handler::File::Basic qw( s2f a2f f2s );
21     use XML::Simple;
22     use XML::Parser;
23     use XML::Parser::EasyTree;
24     use XML::XPath;
25    
26    
27     sub sendQuery {
28     my $self = shift;
29     my $xpq = shift;
30     my $options = shift;
31    
32     $self->log( "xpq='$xpq'", 'info' );
33    
34     # trace
35     #print Dumper($self);
36     #exit;
37    
38     my $file = $self->{filename};
39    
40     if (! -e $file) {
41     $self->log("File not found: '$file'.", 'error');
42     return;
43     }
44    
45     #print "file: $file", "\n";
46     #print "xpq: $xpq", "\n";
47    
48     # filter nodes by xpath-query
49     my $xp = XML::XPath->new( filename => $file );
50     my $nodeset = $xp->find($xpq);
51    
52     # build result xml
53     my $buffer;
54     foreach my $node ($nodeset->get_nodelist) {
55     $buffer .= XML::XPath::XMLParser::as_string($node) . "\n\n";
56     }
57     #$buffer .= '';
58     #$buffer = "<result>$buffer</result>";
59    
60     # trace
61     #print $buffer, "\n";
62     #exit;
63    
64     $self->{buffer} = $buffer;
65    
66     }
67    
68     sub getResult {
69     my $self = shift;
70     return $self->{buffer};
71     }
72    
73     sub circumflex {
74     my $self = shift;
75     my $tag = shift;
76     # mungle result payload
77     $self->{buffer} = "<$tag>" . $self->{buffer} . "</$tag>" if $self->{buffer};
78     }
79    
80     sub isEmpty {
81     my $self = shift;
82     return not defined $self->{buffer};
83     }
84    
85     sub toEasyTree {
86     my $self = shift;
87    
88     $XML::Parser::EasyTree::Noempty = 1;
89    
90     # convert xml data to native perl data structure
91     #my $parser = XML::Parser->new( Style => 'EasyTree', Handlers => { Char => sub { my $char = shift; print "char: ", Dumper($char), "\n"; } } );
92     #my $parser = XML::Parser->new( Style => 'EasyTree', Handlers => { Char => sub {} } );
93     my $parser = XML::Parser->new( Style => 'EasyTree' );
94     my $data = $parser->parse($self->{buffer});
95    
96     # trace
97     #print Dumper($data);
98     #exit;
99    
100     # FIXME!?
101     my $hash = $data->[0];
102    
103     # trace
104     #print Dumper($hash);
105     #exit;
106    
107     #$self->{payload} = $hash;
108     return $hash;
109    
110     }
111    
112     sub toSimpleTree {
113     my $self = shift;
114     #print $self->{buffer};
115     #exit;
116     #$self->{payload} = XMLin($self->{buffer});
117     return XMLin($self->{buffer});
118     }
119    
120    
121     1;
122     __END__

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