我在尝试输出正在解析的匹配节点的内容时遇到了麻烦:
<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/>
我显然可以正则表达式删除它,但这感觉很麻烦,我确定我只是错过了某个地方的功能吗?
答案 0 :(得分:0)
尝试这样做:
my $description = $tree->findnodes('//div[@class="description"]/text()')->[0];
这是一个Xpath技巧。
答案 1 :(得分:0)
使用./node()
获取所有子节点,包括文本和元素。
my $description = $tree->findnodes('//div[@class="description"]/node()');