sub _escapeLiteral {
my $data = $_[0];
if ($data =~ /[\&\<\>\"]/) {
$data =~ s/\&/\&\;/g;
$data =~ s/\\<\;/g;
$data =~ s/\>/\>\;/g;
$data =~ s/\"/\"\;/g;
}
return $data;
}
####
use strict;
use warnings;
use XML::Writer;
my %hash = (
str1 => 'one 'one&two',
str3 => 'two>one',
str4 => 'Caisse D"Eparge',
str5 => q(Caisse D'Eparge),
);
my $Writer = XML::Writer->new(
OUTPUT => 'self',
DATA_MODE => 1,
DATA_INDENT => 2,
);
$Writer->startTag('root');
$Writer->dataElement( $_, $hash{$_} ) for sort keys %hash;
$Writer->endTag('root');
$Writer->end();
print $Writer->to_string;
####
one<two
one&two
two>one
Caisse D"Eparge
Caisse D'Eparge