HTML::TreeBuilder继承自HTML::Parser和HTML::Element,所以下面讲的很多方法实际上源于HTML::Parser和HTML::Element。
拿下面这个HTML文件开刀:
<html lang='i-klingon'>
<head><title>Pati Pata</title></head>
<body>
<h1 lang='la'>职工</h1>
<p lang='es-MX' align='center'>
Foo bar baz <cite>Quux</cite>.
</p>
<p>Hooboy.</p>
</body>
</html>
perl代码:
#!/usr/bin/perl use HTML::Element; use HTML::TreeBuilder; foreach my $file_name (@ARGV) { my $tree = HTML::TreeBuilder->new; $tree->parse_file($file_name); $head=$tree->find_by_tag_name('head'); ##找到head节点 print $head->attr('_parent')->as_text(); ##_parent属性的值是html节点 print "\n"; $tree = $tree->delete; }
首先根据一个文件创建了一棵HTML结构解析树$tree,注意$tree本身也是HTML::Element的一个实例,因为HTML::TreeBuilder继承自 HTML::Element。
调用<html>节点的as_text输出:Pati Pata职工 Foo bar baz Quux. Hooboy.