in reply to Re: How to encode apostrophe and quote using XML::Writer?
in thread How to encode apostrophe and quote using XML::Writer?
"... and it outputs an XML file with the apostrophes and quotation marks intact."
But the OP wanted the apostrophes and quotation marks encoded into " and &pos; however.The source for XML::Writer has this routine defined:
But i am very unclear on how it is being called, if at all.sub _escapeLiteral { my $data = $_[0]; if ($data =~ /[\&\<\>\"]/) { $data =~ s/\&/\&\;/g; $data =~ s/\</\<\;/g; $data =~ s/\>/\>\;/g; $data =~ s/\"/\"\;/g; } return $data; }
Here is the code that i used:
And the results:use strict; use warnings; use XML::Writer; my %hash = ( str1 => 'one<two', str2 => '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;
As you can see, the double quote probably should have been encoded but not the single quote. XML::Writer seems very limited in this regard, at the very least, the documentation is unclear on how to customize your usage of the interface (and the code itself is hard to follow).<root> <str1>one<two</str1> <str2>one&two</str2> <str3>two>one</str3> <str4>Caisse D"Eparge</str4> <str5>Caisse D'Eparge</str5> </root>
I would recommend using another XML module, perhaps even recommend using JSON instead if possible.
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
|
---|
In Section
Seekers of Perl Wisdom