Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: How to encode apostrophe and quote using XML::Writer?

by jeffa (Bishop)
on Feb 10, 2016 at 20:02 UTC ( #1154889=note: print w/replies, xml ) Need Help??


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:

sub _escapeLiteral { my $data = $_[0]; if ($data =~ /[\&\<\>\"]/) { $data =~ s/\&/\&amp\;/g; $data =~ s/\</\&lt\;/g; $data =~ s/\>/\&gt\;/g; $data =~ s/\"/\&quot\;/g; } return $data; }
But i am very unclear on how it is being called, if at all.

Here is the code that i used:

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;
And the results:
<root> <str1>one&lt;two</str1> <str2>one&amp;two</str2> <str3>two&gt;one</str3> <str4>Caisse D"Eparge</str4> <str5>Caisse D'Eparge</str5> </root>
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).

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)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1154889]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2019-06-17 01:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Is there a future for codeless software?



    Results (76 votes). Check out past polls.

    Notices?
    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!