使用HTML::TreeBuilder—或Mojo::DOM—我想刮掉内容,但保持其顺序,以便我可以将文本值放入数组中(然后用变量替换文本值用于模板目的)
但是在TreeBuilder
my $map_r = $tree->tagname_map();
my @contents = map { $_->content_list } $tree->find_by_tag_name(keys %$map_r);
foreach my $c (@contents) {
say $c;
}
不返回顺序——当然哈希是没有顺序的。那么,如何从根向下访问树并保持返回值的顺序呢?递归遍历树?基本上,除了每个元素之外,我想使用'as_text'方法。(遵循这个好主意,但我需要它的所有元素)
这样比较好(使用Mojo::DOM):
$dom->parse($html)->find('*')->each(
sub {
my $text = shift->text;
$text =~ s/s+/ /gi;
push @text, $text;
}
);