如何在没有xml :: smart包的文件中保存xml输出

时间:2014-07-21 20:19:28

标签: xml perl

我正在尝试将xml输出保存到没有智能包的xml文件但无法执行此操作。

use warnings;
use strict;
use XML::Simple;

my $xml;
my @hash = qw('test' '60.0' 'test1' '103' 'test2' '20' 'test3' '108');

my %hash1 =@hash;

my $hash2 = \%hash1;

my $xs = new XML::Simple;
$xml = $xs->XMLout($hash2 ,
                  NoAttr => 1,
                  RootName=>'newPhone',
                  );
print $xml;
$xml->save('newfile.xml') ;

3 个答案:

答案 0 :(得分:2)

XML::Simple中没有神奇的save方法。如果您尝试使用代码,则会收到一条错误消息,告诉您:

Can't locate object method "save" via package "<newPhone>..."

相反,要输出到文件,只需打开文件句柄并打印到它:

use warnings;
use strict;
use autodie;

use XML::Simple;

my %hash = qw(test 60.0 test1 103 test2 20 test3 108);;

my $xs = new XML::Simple;
my $xml = $xs->XMLout(\%hash,
     NoAttr    => 1,
     RootName  => 'newPhone',
);

open my $fh, '>', 'newfile.xml';
print $fh $xml;
close $fh;

答案 1 :(得分:1)

use warnings;
use strict;
use XML::Simple;

my $xml;
my @hash = qw('test' '60.0' 'test1' '103' 'test2' '20' 'test3' '108');

my %hash1 =@hash;

my $hash2 = \%hash1;

my $xs = new XML::Simple;
$xml = $xs->XMLout($hash2 ,
                  NoAttr => 1,
                                    RootName=>'newPhone',
                                                      );
#print $xml;
open (FH, '>newfile.xml') || die "unable to create $!";
$xml = qq{<?xml version="1.0" encoding="UTF-8"?>\n} . $xml;
print FH $xml;
close (FH);

答案 2 :(得分:0)

考虑使用我的XML::MyXML模块,它保存,没有依赖关系,并且适用于小型XML文档。