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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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