2014-07-21 3 views
0

스마트 패키지없이 xml 파일에 XML 출력을 저장하려고하지만 할 수 없습니다.xml :: smart 패키지없이 xml 출력을 파일에 저장하는 방법

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

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

my %hash1 [email protected]; 

my $hash2 = \%hash1; 

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

"스마트"가 실제로 "단순"해야합니까? 같은 파일 핸들이 코드에 사용하면 버그를 추적하는 하드로 이어질 수 bareword는 파일 핸들,시 – toolic

답변

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
use warnings; 
use strict; 
use XML::Simple; 

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

my %hash1 [email protected]; 

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); 
+1

현대 펄 스타일의 찡그리고, 2 개 인수 당신은 아마 출력이 UTF-8로 원하는 특히이 경우'open', 인코딩 됨. open 문은 open (my $ fh, '> : utf8', 'newfile.xml')', print'print {$ fh} $ xml' 그리고 close'close $ fh'이어야합니다. – mirod

0

저장 내 XML::MyXML 모듈을 사용하는 것을 고려는 종속성이없고, 작은 XML 문서 괜찮습니다.

관련 문제