summaryrefslogtreecommitdiff
path: root/Xerl/XML/SAXHandler.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Xerl/XML/SAXHandler.pm')
-rw-r--r--Xerl/XML/SAXHandler.pm19
1 files changed, 16 insertions, 3 deletions
diff --git a/Xerl/XML/SAXHandler.pm b/Xerl/XML/SAXHandler.pm
index 9bbb32d..df07fca 100644
--- a/Xerl/XML/SAXHandler.pm
+++ b/Xerl/XML/SAXHandler.pm
@@ -34,6 +34,8 @@ use base qw(XML::SAX::Base);
use strict;
use warnings;
+use 5.10.0;
+
use Data::Dumper;
use Xerl::Base;
@@ -46,6 +48,7 @@ sub start_document {
$self->{xerl}{current} = undef;
$self->{xerl}{stack} = [];
+
return undef;
}
@@ -62,18 +65,29 @@ sub start_element {
$x->{current} = Xerl::XML::Element->new();
$x->{current}->set_name($doc->{Name});
- $x->{current}->set_params(\%params);
+ $x->{current}->set_params(\%params) if %params;
${$x->{stack}}[-1]->push_array($x->{current}) if @{$x->{stack}};
return undef;
}
+sub characters {
+ my ($self, $doc) = @_;
+ my $x = $self->{xerl};
+
+ $x->{last_data} = $doc->{Data};
+
+ return undef;
+}
+
sub end_element {
my ($self, $doc) = @_;
my $x = $self->{xerl};
- $x->{current} = pop @{$x->{stack}};
+ my $prev = pop @{$x->{stack}};
+ $prev->{text} = $x->{last_data};
+ $x->{current} = $prev;
return undef;
}
@@ -83,7 +97,6 @@ sub end_document {
my $x = $self->{xerl};
print Dumper $x->{root};
- exit;
return undef;
}