X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=lib%2FNet%2FOpenSRS.pm;fp=lib%2FNet%2FOpenSRS.pm;h=34303ab0b2cf0bf10fc57fc2d0f98e00a1cca6fd;hb=62b6bbdbc1f67ef71aac658cd8ff535022d3df11;hp=07f2e3ef7666627c5ba2ccd626a2e23d0a498d73;hpb=d1336f14bcb3ab82414b2ca25f802904c0f28a96;p=Net-OpenSRS.git diff --git a/lib/Net/OpenSRS.pm b/lib/Net/OpenSRS.pm index 07f2e3e..34303ab 100644 --- a/lib/Net/OpenSRS.pm +++ b/lib/Net/OpenSRS.pm @@ -150,7 +150,7 @@ use XML::Simple; use Digest::MD5; use Date::Calc qw/ Add_Delta_Days Today This_Year /; -our $VERSION = '0.05'; +our $VERSION = '0.06'; my $rv; *hash = \&Digest::MD5::md5_hex; @@ -1194,6 +1194,24 @@ XML return $self->last_response(1); } +# encode special characters + +my %encode_hash = ( + '<' => '<', + '>' => '>', + "'" => ''', + '"' => '"', + '&' => '&', +); + +sub _encode +{ + my $arg = shift; + return $arg unless ($arg =~/\<|\>|\'|\"|\&/); + $arg =~ s/(\<|\>|\'|\"|\&)/$encode_hash{$1}/ge; + $arg +} + # format perl structs into opensrs XML sub _format { @@ -1207,7 +1225,7 @@ sub _format my $c = 0; $xml .= "$sp\n"; $xml .= "$sp \n"; - foreach (sort @$val) { + foreach (map { _encode($_) } sort @$val) { $xml .= "$sp $_\n"; $c++; } @@ -1226,6 +1244,7 @@ sub _format } else { + $val = _encode($val); $xml .= "$sp$val\n"; }