Как отобразить предков с помощью XML::Twig?

Я не знаю, как отобразить ancestors_or_self одного элемента.

Вот сообщение об ошибке, которое я получаю при использовании метода ancestors_or_self():не могу вызвать метод "print" без ссылки на пакет или объект в xxxx

#!/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;

спасибо за вашу помощь по 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;

Это потому что ancestors_or_self возвращает список, и вы не можете вызвать метод списка. Используйте это вместо:

$_->print for $v->ancestors_or_self; 
Другие вопросы по тегам