2012-11-08 11 views
2

xml을 xml 파일로 변환 중입니다. 텍스트를 소스로 변환하려고합니다. 나는 현재 xml :: Twig을 사용하고 있으며 xml의 변경없이 출력이 필요하다.xml 파일의 엔터티를 이스케이프 처리합니다.

나는 시도 :

XML :

<book> 
<book-meta> 
<book-id pub-id-type="doi">98568</book-id> 
<copyright-statement>Copyright &#x00A9; 1999 Relati</copyright-statement> 
<imprint-text type="PublisherInfo">This edition published in the Taylor &#x0026; 2002.</imprint-text> 
</book-meta> 
</book> 

스크립트 :

use strict; 
use XML::Twig; 
use XML::Xpath; 
open(my $output , '>', "Output.xml") || die "can't open the Output $!\n"; 
my $xml_twig_content = XML::Twig->new(
twig_handlers => { 
keep_atts_order => 1, 
keep_encoding => 1, 
}, 
pretty_print => 'indented', 
); 
$xml_twig_content->parsefile('sample.xml'); 
$xml_twig_content->print($output); 

출력 :

<book> 
<book-meta> 
<book-id pub-id-type="doi">98568</book-id> 
<copyright-statement>Copyright © 1999 Relati</copyright-statement> 
<imprint-text type="PublisherInfo">This edition published in the Taylor &amp; 2002.</imprint-text> 
</book-meta> 
</book> 

내가 필요한 출력 :

<book> 
<book-meta> 
<book-id pub-id-type="doi">98568</book-id> 
<copyright-statement>Copyright &#x00A9; 1999 Relati</copyright-statement> 
<imprint-text type="PublisherInfo">This edition published in the Taylor &#x0026; 2002.</imprint-text> 
</book-meta> 
</book> 

어떻게 변경없이 소스로 필요로 할 수 있습니다.

+0

가 왜 여기에 XML :: XPath를 포함합니까? 그것은 당신의 코드에 의해 필요하지 않습니다. – mirod

답변

1

문에 keep_encodingkeep_atts_order 매개 변수가 twig_handlers으로 선언되어 있습니다. 나는 이것이 당신이 원하는 것이라고 생각하지 않습니다. 왜냐하면 이것은 XML에 keep_atts_order 또는 keep_encoding이라는 요소가 발견 되 자마자 죽는 것이기 때문입니다.

나는이 더 당신이 생각했던 것 같은 생각 :

my $xml_twig_content = XML::Twig->new(keep_atts_order => 1, 
             keep_encoding => 1, 
             pretty_print => 'indented', 
            ); 
+1

감사합니다 ... – user1787633