Data-asXML
view release on metacpan or search on metacpan
lib/Data/asXML.pm view on Meta::CPAN
# cleanup at the end
if ($indent == 0) {
$self->{'_href_mapping'} = {};
$self->{'_cur_xpath_steps'} = [];
}
# in safe_mode decode back the xml string and compare the data structures
if ($safe_mode) {
my $xml_string = $where->toString;
my $what_decoded = eval { $self->decode($xml_string) };
die 'encoding failed '.$@.' of '.eval('use Data::Dumper; Dumper([$what, $xml_string, $what_decoded])').' failed'
if not eq_deeply($what, $what_decoded);
# set back the safe mode after all was encoded
$self->safe_mode($safe_mode);
}
return $where;
}
sub _xpath_steps_string {
my $self = shift;
lib/Data/asXML.pm view on Meta::CPAN
Takes C<$xmlstring> and converts to data structure.
=cut
sub decode {
my $self = shift;
my $xml = shift;
my $pos = shift || 1;
# in safe_mode "encode+decode" the decoded data for comparing
if ($self->safe_mode) {
$self->safe_mode(0);
my $data = $self->decode($xml, $pos);
my $data_redecoded = eval { $self->decode(
$self->encode($data)->toString,
$pos,
)};
die 'redecoding failed "'.$@.'" of '.eval('use Data::Dumper; Dumper([$xml, $data, $data_redecoded])').' failed'
if not eq_deeply($data, $data_redecoded);
$self->safe_mode(1);
return $data;
}
if (not $self->{'_cur_xpath_steps'}) {
local $self->{'_href_mapping'} = {};
local $self->{'_cur_xpath_steps'} = [];
}
my $value;
( run in 0.540 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )