1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
# ----------------------------------------------------------------
use strict;
use Test::More tests => 9;
BEGIN { use_ok('XML::TreePP') };
# ----------------------------------------------------------------
my $tpp = XML::TreePP->new();
my $source = '<root><text><>&"'&gt;&lt;</text><cdata><![CDATA[<>&"'&gt;&lt;]]></cdata><attr key="<>&"'&gt;&lt;">BBB</attr></root>';
my $tree = $tpp->parse( $source );
is( $tree->{root}->{text}, '<>&"\'><', "parse text node" );
is( $tree->{root}->{cdata}, '<>&"'&gt;&lt;', "parse cdata node" );
is( $tree->{root}->{attr}->{'-key'}, '<>&"\'><', "parse attribute" );
$tree->{root}->{text_add} = '<>&"'&gt;&lt;';
my $cdata_raw = $tree->{root}->{cdata};
$tree->{root}->{cdata_ref} = \$cdata_raw;
my $back = $tpp->write( $tree );
my $text = ( $back =~ m#<text>(.*)</text># )[0];
is( $text, '<>&"'&gt;&lt;', "write text node" );
my $cdata = ( $back =~ m#<cdata>(.*)</cdata># )[0];
is( $cdata, '&lt;&gt;&amp;&quot;&apos;&amp;gt;&amp;lt;', "write cdata node (as text node)" );
my $attr = ( $back =~ m#<attr\s+key="(.*?)"\s*># )[0];
is( $attr, '<>&"'&gt;&lt;', "write attribute" );
my $tadd = ( $back =~ m#<text_add>(.*)</text_add># )[0];
is( $tadd, '&lt;&gt;&amp;&quot;&apos;&amp;gt;&amp;lt;', "write new var" );
my $cref = ( $back =~ m#<cdata_ref>(.*)</cdata_ref># )[0];
is( $cref, '<![CDATA[<>&"'&gt;&lt;]]>', "write cdata node (as cdata)" );
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------
|