2012-04-03 1 views
0

내 출력을 xml 형식으로 지정해야합니다. 필자는 매개 변수에서 숫자를 얻고이 숫자는 이전 부모 요소로부터 얼마나 많은 공간이 있는지를 나타냅니다.Perl 형식 출력 xml

<?xml version="1.0"?> 
<LEVEL1> 
    <LEVEL2> 
    <LEVEL3/> 
    </LEVEL2> 
</LEVEL1> 

또는 4 : 예 번호 2의

<?xml version="1.0"?> 
<LEVEL1> 
    <LEVEL2> 
     <LEVEL3/> 
    </LEVEL2> 
</LEVEL1> 

나는 MODUL의 XML :: LibXML을 좋아하고 방법은 내가이 MODUL에서 할 수있는 방법이 있습니까? 또는 어떤 모듈이 이것을 할 수 있습니까?

그리고 한 가지 더 말씀 드리면, 제목 뒤에 새 줄을 설정할지 (또는 지정하지 않을지) 어떻게해야합니까? 어떻게해야합니까?

1) XML을 통해 :: 나뭇 가지 : http://search.cpan.org/dist/XML-Twig/Twig.pm

2) XML :: LibXML을 통해 : 당신이

답변

2

당신은 들여 쓰기 문자열 정의 set_indent를 사용할 수 있습니다

#!/usr/bin/perl 

use strict; 
use warnings; 

use XML::Twig; 

my $indent_nb= shift @ARGV || 1; 

my $t= XML::Twig->new(pretty_print => 'indented'); 
$t->set_indent(' ' x $indent_nb); 
$t->parse(\*DATA)->print; 

__DATA__ 
<?xml version="1.0"?> 
<LEVEL1> 
    <LEVEL2> 
    <LEVEL3/> 
    </LEVEL2> 
</LEVEL1> 
2

난 그냥 일반적으로 들여 쓰기 위해이 개 가능한 솔루션을 발견했습니다 감사 당신은을 설정할 수 있습니다 들여 쓰기 길이.

확인 여기 형식 파라미터에 대한 설명 : http://metacpan.org/pod/XML::LibXML::Document

편집 : 미안 해요, 너무 빨리했다. 당신의 의도는 input-xml-base의 밑에 indent-size를 계산하는 것입니다.

+0

내가 PARAMS 얻을 값으로 출력하고자 설정할을하지만 지금은 당신의 연결이 읽을 : "libxml2를을 들여 쓰기 수준 당 2 개의 공백 문자들로 하드 코딩 된 들여 쓰기를 사용합니다.이 값은 런타임에 변경할 수 없습니다."그래서 libxml의 공간 수를 변경할 수 없기 때문에 다른 방법으로해야합니다. –

+0

첫 번째 링크가 죽었습니다 –

+0

thx, corrected –

0

XML :: LibXML "to_string"또는 "to_file"기능을 사용할 수 있습니다. 둘 다 http://metacpan.org/pod/XML::LibXML::Document에서 언급 한 "형식"을 지원합니다. to_file 함수에서 파일 이름 다음의 두 번째 매개 변수입니다.

선택적 $ format 매개 변수는 출력의 들여 쓰기를 설정합니다. 이 매개 변수는 들여 쓰기를 사용해야한다고 지정하는 정수 값이어야합니다. 그것을 사용하는 경우 형식 매개 변수는 세 가지 다른 값을 가질 수있다 : $ 형식이 0

경우가 이

$ 형식, libxml2를 흰색 무시할 추가합니다 1 인 경우

을 구문 분석 원래이었다로 문서가 덤프보다 공백이므로 노드 의 내용을 읽기가 쉽습니다. 기존 텍스트 노드가 변경되지 않습니다

$ 형식이 2 이상이면 libxml2는 $ format == 1로 작동하지만 은 각 텍스트 노드에 선행 및 후행 줄 바꿈을 추가합니다.

libxml2는 들여 쓰기 레벨 당 개의 하드 코드 된 들여 쓰기를 사용합니다. 이 값은 런타임에 변경할 수 없습니다.

my blog에 perl에서 적절한 xml을 생성하는 방법에 대한 간단한 예를 볼 수 있습니다. XML :: 나뭇 가지와

+0

예, xml 형식을 지정하는 데 도움이되지만 용량을 설정할 수 없습니다. 들여 쓰기에 사용할 글자들과 내가 필요로하는 것들. –

+0

아, 미안, 나는 그것을 얻지 못했다. –