my $attributes = $sibling_element->atts();
$attributes->{'#CDATA'} = 1;
# '#CDATA' attribute is defined here
my $elt1 = XML::Twig::Elt->new('present', $attributes, 'This is in CDATA');
# '#CDATA' attribute is undefined here
my $elt2 = XML::Twig::Elt->new('missing', $attributes, 'This is not in CDATA');
####
perl -v
This is perl 5, version 26, subversion 0 (v5.26.0) built for MSWin32-x64-multi-thread
####
#!/usr/bin/perl
use 5.026;
use strict;
use warnings;
use XML::Twig;
{
open (my $OFILE, '>:utf8', 'file.out.xml') or die "$!\n$^E";
my $t = XML::Twig->new(
twig_handlers => {
'/keys/key' => sub { makeDuplicates(@_, $OFILE); 1; },
},
output_encoding => 'utf-8',
pretty_print => 'indented',
);
$t->safe_parse(\*DATA);
if ( $@ ) {
die "Error occured in XML data\n$@";
}
close $OFILE;
}
sub makeDuplicates {
my ($_twig, $key_element, $OFILE) = @_;
my $text = $key_element->text();
my $attributes = $key_element->atts();
$attributes->{'#CDATA'} = 1;
# '#CDATA' attribute is defined here
my $lc_element = XML::Twig::Elt->new('lc_key', $attributes, lc $text);
# '#CDATA' attribute is undefined here
my $uc_element = XML::Twig::Elt->new('uc_key', $attributes, uc $text);
$lc_element->paste(after => $key_element);
$uc_element->paste(after => $key_element);
$_twig->flush($OFILE);
return;
}
__DATA__
####
####
ONE HEN
TWO DUCKS
THREE SQUAWKING GEESE
FOUR LIMERICK OYSTERS
FIVE CORPULENT PORPOISES
SIX PAIR OF DON ALVERZO'S TWEEZERS
SEVEN THOUSAND MACEDONIANS IN FULL BATTLE ARRAY
EIGHT BRASS MONKEYS FROM THE ANCIENT SACRED CRYPTS OF EGYPT
NINE APATHETIC, SYMPATHETIC, DIABETIC OLD MEN ON ROLLER SKATES, WITH A MARKED PROPENSITY TOWARDS PROCRASTINATION AND SLOTH
TEN LYRICAL, SPHERICAL, DIABOLICAL DENIZENS OF THE DEEP WHO STALK ABOUT THE CORNERS OF THE COVE ALL AT THE SAME TIME.