如何使用 XML::Twig 显示祖先?
Posted
技术标签:
【中文标题】如何使用 XML::Twig 显示祖先?【英文标题】:How to display ancestors with XML::Twig? 【发布时间】:2012-06-15 10:34:31 【问题描述】:我不知道如何显示一个元素的祖先或自我。
这是我在使用方法祖先_or_self() 时收到的错误消息: 如果没有 xxxx 处的包或对象引用,则无法调用方法“print”
#!/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 的帮助
【问题讨论】:
【参考方案1】: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;
【讨论】:
抱歉,我的电脑已经离开了 1 天。我正在尝试你所有的解决方案。将在接下来的几个小时内回复您 您使用path
的方法有效。我将在 1 小时内发布完整的 cmets
你的解决方案是有效的:print $v->path . "/"; $v->print;
THANKS !!
实际上父/祖先有一个id:<papa id="Larry Page"> </papa>
。我必须得到以下输出<papa id="Larry Page"><son> toto </son> </papa>
。有什么帮助吗?【参考方案2】:
那是因为ancestors_or_self
返回一个列表,不能调用列表的方法。改用这个:
$_->print for $v->ancestors_or_self;
【讨论】:
谢谢。不幸的是,该命令返回了完整的 XML 文件,而不仅仅是元素 $v 的整个路径 好吧,我已经回答了你的直接问题,只是修正了语法。如果你真的想显示你的元素的路径,也许$v->path()
应该更合适?
$v->path()
不显示任何内容。 ?
say $_->tag for $v->ancestors_or_self;
怎么样
print $v->path . "/"; $v->print;
是解决方案似乎 Dre 和 @raina77ow 找到了它。非常感谢!!!以上是关于如何使用 XML::Twig 显示祖先?的主要内容,如果未能解决你的问题,请参考以下文章