我正在尝试在Perl中打印一些基本日志,但我遇到了一个非常简单的问题:我无法打印XML标记的内容。
my $twig=XML::Twig->new(pretty_print => "nice");
$twig->parse($xml);
my $root = $twig->root;
my @desc=$root->descendants_or_self('node');
my $nrofdesc=@desc;
my $sentence = $root->descendants('sentence')->print;
my $sentenceid = $root->{att}->{id};
if ($nrofdesc > $maxdescendants) {
print "$sentence\t$nrofdesc\t$sentenceid\n";
}
我尝试了上面的代码,但收到了错误
如果没有包或对象引用,则无法调用方法“print” file.pl第35行,第15行。
这一行:
my $sentence = $root->descendants('sentence')->print;
我也经常提出text
,但我得到同样的错误。我在这里缺少什么?
答案 0 :(得分:3)
这不是jQuery; - (你必须遍历后代列表。
另外,您无法使用print
收集变量中的数据,而是使用print
来...打印!请改用sprint
:
$sentence= join '', map { $_->sprint } $root->descendants('sentence');
如果你想要的是元素的文本,并且所有sentence
元素的内容都是纯文本,你也可以使用$sentence= $root->findvalue( '//sentence')
此外,使用$root->att( 'id')
或$root->id
,因为$root->{att}->{id}
不是官方API的一部分,并且可能在将来发生变化。