Perl的HTML :: Element - 只将后代转换为HTML

时间:2013-02-06 13:21:05

标签: perl xpath html-parsing html-tree

我在尝试输出正在解析的匹配节点的内容时遇到了麻烦:

<div class="description">some text <br/>more text<br/></div>

我正在使用HTML::TreeBuilder::XPath来查找节点(此类只有一个div):

my $description = $tree->findnodes('//div[@class="description"]')->[0];

它找到了节点(以HTML::Element的形式返回我相信),但$description->as_HTML也包含了元素本身 - 我只是希望元素中包含的所有内容都是HTML:

some text <br/>more text<br/>

我显然可以正则表达式删除它,但这感觉很麻烦,我确定我只是错过了某个地方的功能吗?

2 个答案:

答案 0 :(得分:0)

尝试这样做:

my $description = $tree->findnodes('//div[@class="description"]/text()')->[0];

这是一个Xpath技巧。

答案 1 :(得分:0)

使用./node()获取所有子节点,包括文本和元素。

my $description = $tree->findnodes('//div[@class="description"]/node()');