one<two one&two two>one Caisse D&quot;Eparge Caisse D&apos;Eparge #### one<two one&two two>one Caisse D"Eparge Caisse D'Eparge #### use strict; use warnings; use Cwd; use XML::Writer; use XML::Writer::String; use HTML::Entities; use utf8; use Modern::Perl; my $str1 = qq(oneone); # > (>) my $str4 = qq(Caisse D"Eparge); # " ("); my $str5 = qq(Caisse D'Eparge); # ' ('); $str4 =~ s/\x{22}/\#\#\#doublequote\#\#\#/g; $str5 =~ s/\x{27}/\#\#\#apostrophe\#\#\#/g; say "str4: $str4"; say "str5: $str5"; my $file = cwd() . '/test.xml'; my $BOD = XML::Writer::String->new(); my $Writer = XML::Writer->new( OUTPUT => $BOD, DATA_MODE => 1, DATA_INDENT => 2 ); $Writer->xmlDecl("UTF-8"); $Writer->startTag('root'); $Writer->dataElement('str1', $str1); $Writer->dataElement('str2', $str2); $Writer->dataElement('str3', $str3); $Writer->dataElement('str4', $str4); $Writer->dataElement('str5', $str5); $Writer->endTag('root'); $Writer->end(); my $xml = $BOD->value(); $xml =~ s/\#\#\#doublequote\#\#\#/\"\;/g; $xml =~ s/\#\#\#apostrophe\#\#\#/\&apos\;/g; my $fh = new IO::File "> $file"; if (defined $fh) { print $fh "$xml"; $fh->close; } exit;