Как отобразить предков с помощью 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;