2012-06-15 3 views
2

한 요소의 ancestors_or_self를 표시하는 방법을 모르겠습니다. 가 당신의 도움을 XXXX에서 패키지 또는 객체를 참조하지 않고XML :: Twig를 사용하여 조상을 표시하는 방법은 무엇입니까?

#!/usr/bin/perl -w 
use warnings; 
use XML::Twig; 

my $t= XML::Twig->new; 
my $v= XML::Twig::Elt->new; 

$v= $t->first_elt('[@id]'); 
$v->print; 
print ("\n\n"); 
$v->ancestors_or_self->print; 

감사 방법 "인쇄"를 호출 할 수 없습니다 : 여기

는 방법 ancestors_or_self()를 사용할 때 얻을 오류 메시지입니다 Perl XML :: Twig

답변

2

ancestors_or_self는 목록을 반환 - 당신이 요소의 경로를 원하는 가정, 당신은 또한 ->path하지 ->print를 원한다. ->path반환 경로를로 그리고 당신은 이런 식으로 뭔가를해야 할 것 :

#!/usr/bin/perl -w 
use warnings; 
use XML::Twig; 

my $t= XML::Twig->new; 
my $v= XML::Twig::Elt->new; 

$v= $t->first_elt('[@id]'); 
print $v->path . "\n"; 
print ("\n\n"); 
print $_->path . "\n" foreach $v->ancestors_or_self; 
+0

죄송합니다. 내 컴퓨터에서 하루 동안 죄송합니다. 나는 당신의 모든 해결책을 시도하고 있습니다. 다음 시간에 다시 돌아올 것입니다 – laurentngu

+0

'path'가있는 메소드가 작동 중입니다. 나는 1 시간 안에 완전한 코멘트를 올릴 것입니다. – laurentngu

+1

당신의 솔루션이 제가 필요로하는 것입니다. 그것은 작동합니다! 감사합니다 – laurentngu

2

ancestors_or_self이 목록을 반환하고 목록 방법을 호출 할 수 없기 때문입니다. 대신를 사용

$_->print for $v->ancestors_or_self; 
+0

감사합니다. 불행히도이 명령은 내 요소 $ V2의 전체 경로 대신 ** 완전한 XML 파일 **을 리턴합니다. – laurentngu

+0

글쎄, 나는 문법을 고쳐서 직접 질문에 답했습니다. 요소의 경로를 정말로 표시하고 싶다면'$ v-> path()'가 더 적합할까요? – raina77ow

+0

'$ v-> path()'는 아무 것도 표시하지 않습니다. ? – laurentngu

관련 문제