diff options
| author | Paul Buetow (pluto.buetow.org) <paul@buetow.org> | 2013-09-15 16:45:59 +0200 |
|---|---|---|
| committer | Paul Buetow (pluto.buetow.org) <paul@buetow.org> | 2013-09-15 16:45:59 +0200 |
| commit | d7f6c13f823bd53d7b5a3d5c004850b6b3d9307d (patch) | |
| tree | f3713f31c02c323bf29f6187e50e84d784b9b877 /Xerl/XML | |
| parent | 5b8d78daa0477fbce7e0f55d2fc424bae469acc2 (diff) | |
can parse xml and attribs
Diffstat (limited to 'Xerl/XML')
| -rw-r--r-- | Xerl/XML/SAXHandler.pm | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Xerl/XML/SAXHandler.pm b/Xerl/XML/SAXHandler.pm new file mode 100644 index 0000000..9bbb32d --- /dev/null +++ b/Xerl/XML/SAXHandler.pm @@ -0,0 +1,91 @@ +# Xerl (c) 2005-2011,2013 Dipl.-Inform. (FH) Paul C. Buetow +# +# E-Mail: xerl@dev.buetow.org WWW: http://xerl.buetow.org +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of buetow.org nor the names of its contributors may +# be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED Paul C. Buetow ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT Paul C. Buetow BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +package Xerl::XML::SAXHandler; + +use base qw(XML::SAX::Base); + +use strict; +use warnings; + +use Data::Dumper; + +use Xerl::Base; +use Xerl::XML::Element; + +sub start_document { + my ($self, $doc) = @_; + + $self->{xerl}{root} = undef; + $self->{xerl}{current} = undef; + $self->{xerl}{stack} = []; + + return undef; +} + +sub start_element { + my ($self, $doc) = @_; + my $x = $self->{xerl}; + + if (defined $x->{current}) { + push @{$x->{stack}}, $x->{current}; + $x->{root} = $x->{current} unless defined $x->{root}; + } + + my %params = map { $_->{Name} => $_->{Value} } values %{$doc->{Attributes}}; + + $x->{current} = Xerl::XML::Element->new(); + $x->{current}->set_name($doc->{Name}); + $x->{current}->set_params(\%params); + + ${$x->{stack}}[-1]->push_array($x->{current}) if @{$x->{stack}}; + + return undef; +} + +sub end_element { + my ($self, $doc) = @_; + my $x = $self->{xerl}; + + $x->{current} = pop @{$x->{stack}}; + + return undef; +} + +sub end_document { + my ($self, $doc) = @_; + my $x = $self->{xerl}; + + print Dumper $x->{root}; + exit; + + return undef; +} + +1; |
