使用Perl组合XML文件

使用Perl组合XML文件,xml,perl,Xml,Perl,我需要使用perl组合xml文件。我编写了这段代码并从一个批处理脚本中调用,它可以工作,但是使用XML writer,它可以工作,但是它将XML中的所有字符替换为和,我希望它只将@data数组中的任何内容转储到新的XML文件中 my $XML_COMBINE_FILE = IO::File->new("> $TARGET_DIR/output.xml"); my $writer = XML::Writer->new(OUTPUT => $XML_COMBINE_FILE

我需要使用perl组合xml文件。我编写了这段代码并从一个批处理脚本中调用,它可以工作,但是使用XML writer,它可以工作,但是它将XML中的所有字符替换为
,我希望它只将@data数组中的任何内容转储到新的XML文件中

my $XML_COMBINE_FILE = IO::File->new("> $TARGET_DIR/output.xml");

my $writer = XML::Writer->new(OUTPUT => $XML_COMBINE_FILE);
$writer->startTag("wd:Report_Data" => "?xml version=\'1.0\' encoding=\'UTF-8\'?>");

foreach (@downloaded_file_list) 
{

    open FILE, "< $TARGET_DIR/$_" or die "Cannot open $_ for reading: $!\n";
    my @data = <FILE>;
    close FILE;

    $writer->characters("@data");
}

    $writer->endTag("wd:Report_Data");
    $writer->end();
    $XML_COMBINE_FILE->close();

    print "XML files Combined Successfully";
my$XML\u COMBINE\u FILE=IO::FILE->new(“>$TARGET\u DIR/output.XML”);
我的$writer=XML::writer->new(输出=>$XML\u文件);
$writer->startTag(“wd:Report\u Data”=>“?xml版本=\'1.0\'编码=\'UTF-8\'?>”;
foreach(@downloaded_file_list)
{
打开文件“<$TARGET\u DIR/$\u”或“die”无法打开$\u读取:$!\n”;
我的@data=;
关闭文件;
$writer->characters(“@data”);
}
$writer->endTag(“wd:Report_Data”);
$writer->end();
$XML_COMBINE_FILE->close();
打印“XML文件组合成功”;
非常感谢您的帮助!谢谢:)

来自文档:

characters($data)

    Add character data to an XML document. All '<', '>', and '&' characters in the $data argument will automatically be escaped using the predefined XML entities:

raw($data)

    Print data completely unquoted and unchecked to the XML document. For example raw('<') will print a literal < character. This necessarily bypasses all well-formedness checking, and is therefore only available in unsafe mode.
字符($data)
将字符数据添加到XML文档中。$data参数中的所有“”和“&”字符将使用预定义的XML实体自动转义:
原始数据(数据)

将完全不带引号且未选中的数据打印到XML文档中。例如raw('您是否尝试过将@数据转储到txt文件中或打印它,以查看它是否首先读取了<>以确保写入是问题所在?
my $writer = XML::Writer->new(OUTPUT => $XML_COMBINE_FILE, UNSAFE => 1);
...
foreach (@downloaded_file_list) 
{

    local $/=undef;
    open my $fh, "<",  "$TARGET_DIR/$_" or die "Cannot open $_ for reading: $!";
    my @data = <$fh>;
    close($fh);

    $writer->raw(@data);
}