my $last_field_name; # cache to prevent repeated fields
+my $broken_cdata = XMLin('<foo><![CDATA[<bar>]]></foo>') eq '<bar>>';
+warn "XML::Simple on this system seems broken with <![CDATA[..]]>.\n" if ($broken_cdata);
+
sub data2xml {
use xmlify;
delete $x->{value};
delete $x->{delimiter};
$x->{content} = $v;
+ $d =~ s#>$## if ($d && $broken_cdata);
$x->{delimiter} = $d;
}
return $x;
if ($val) {
$display_data .= $delimiter.$val if ($d);
$swish_data .= " ".$val if ($s);
- $index->insert($field, $val, $path) if ($i);
+ $index->insert($field, $val, $val, $path) if ($i);
}
if ($iterate_by_page) {
my $tag = $cfg->val($database, 'import_xml_tag') || $type2tag{$type_base} || die "can't find which tag to use for type $type";
$config=XMLin($import_xml_file, ForceArray => [ $tag, 'config', 'format' ], ForceContent => 1 );
+ # check for broken XML::Simple
+ if ( $broken_cdata ) {
+ map {
+ $config->{format}->{$_}->{content} =~ s#>$##;
+ } keys %{ $config->{format} };
+ }
+
# helper for progress bar
sub fmt_time {
my $t = shift || 0;